-
一是先判斷一下 key 是否存在,用 in 操作符:
if?'Paul'?in?d: ????print?d['Paul']
如果 'Paul' 不存在,if語句判斷為False,自然不會執行 print d['Paul'] ,從而避免了錯誤。
二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:
>>>?print?d.get('Bart') 59 >>>?print?d.get('Paul') None
查看全部 -
\n 為轉義字符,表示換行 ,注意為左斜杠!
查看全部 -
第二次學習
查看全部 -
列表生成式的?for 循環后面還可以加上 if 判斷
isinstance(x, str) 可以判斷變量 x 是否是字符串;
字符串的 upper() 方法可以返回大寫的字母。
查看全部 -
items()可以將dict的對象轉換成了包含tuple的list,我們對這個list進行迭代,可以同時獲得key和value:
>>>?d?=?{?'Adam':?95,?'Lisa':?85,?'Bart':?59?} >>>?print?d.items() [('Lisa',?85),?('Adam',?95),?('Bart',?59)]
和 values() 有一個 itervalues() 類似,?items()?也有一個對應的?iteritems(),iteritems() 不把dict轉換成list,而是在迭代過程中不斷給出 tuple,所以, iteritems() 不占用額外的內存。
查看全部 -
dict 對象有一個?values() 方法,這個方法把dict轉換成一個包含所有value的list,這樣,我們迭代的就是 dict的每一個 value:
d?=?{?'Adam':?95,?'Lisa':?85,?'Bart':?59?} print?d.values() #?[85,?95,?59]for?v?in?d.values():????print?v#?85#?95#?59
如果仔細閱讀Python的文檔,還可以發現,dict除了values()方法外,還有一個?itervalues()?方法,用?itervalues()?方法替代?values()?方法,迭代效果完全一樣:
d?=?{?'Adam':?95,?'Lisa':?85,?'Bart':?59?} print?d.itervalues() #?<dictionary-valueiterator?object?at?0x106adbb50>for?v?in?d.itervalues(): ????print?v #?85 #?95 #?59
那這兩個方法有何不同之處呢?
1.?values()?方法實際上把一個 dict 轉換成了包含 value 的list。
2. 但是?itervalues()?方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了生成 list 所需的內存。
3.?打印 itervalues() 發現它返回一個 <dictionary-valueiterator> 對象,這說明在Python中,for 循環可作用的迭代對象遠不止 list,tuple,str,unicode,dict等,任何可迭代對象都可以作用于for循環,而內部如何迭代我們通常并不用關心。
如果一個對象說自己可迭代,那我們就直接用 for 循環去迭代它,可見,迭代是一種抽象的數據操作,它不對迭代對象內部的數據有任何要求。
查看全部 -
迭代永遠是取出元素本身,而非元素的索引。
想在 for 循環中拿到索引
方法是使用?enumerate() 函數:
>>>?L?=?['Adam',?'Lisa',?'Bart',?'Paul'] >>>?for?index,?name?in?enumerate(L):...?????print?index,?'-',?name ...? 0?-?Adam 1?-?Lisa 2?-?Bart 3?-?Paul
zip()函數可以把兩個 list 變成一個 list:
>>>?zip([10,?20,?30],?['A',?'B',?'C']) [(10,?'A'),?(20,?'B'),?(30,?'C')]
查看全部 -
切片(Slice)操作符----‘:’寫法
>>>?L[0:3] ['Adam',?'Lisa',?'Bart']
L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3
如果第一個索引是0,還可以省略
只用一個?:?,表示從頭到尾.
第3個參數:
L[::2]
表示每隔n個取一個,
查看全部 -
十六進制用
0x
前綴和0-9,a-f表示,例如:0xff00
,0xa5b4c3d2
,等等。查看全部 -
①?()定義單元素的tuple有歧義,單元素 tuple 要多加一個逗號“,”例如:t=(1,)
查看全部 -
L = ['Adam', 'Lisa', 'Bart']
L[-1]='Adam'
L[0]='Bart'
print L
#2
L = ['Adam', 'Lisa', 'Bart']
L[-1] ,L[0]=L[0],L[-1]
print L
#3
L = ['Adam', 'Lisa', 'Bart']
L.reverse()
print L
#4
L = ['Adam', 'Lisa', 'Bart']
L[::-1]
print L
查看全部 -
反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。。 如 r"this is a line with \n" 則\n會顯示,并不是換行
我想,學了的人都知道 r'.....' 可以讓里面的\不發生轉義,但細說是這樣的,加 ''r'' 的作用并不是讓它不轉義,而是在會改變原始內容的情況下,不發生轉義,但沒有改變原始內容的作用還是可以實現。
例如?print r'12,\'12\'' 去掉 ''\'' 后,代碼就會執行失敗。可以說明 ''\'' 是產生了作用的,但它并沒有消失,而是以?
12,\'12\'
原始內容全部輸出。這就是為什么 ''\n''沒有任何作用的原因。
查看全部 -
def?move(n,a,b,c):
????if?n?==1:
????????print?a,?'-->',?c
????????return
????move(n-1,?a,?c,?b)?
????print?a,?'-->',?c
????move(n-1,?b,?a,?c)
move(5,?'A',?'B',?'C') #n改為5????move(4,a,c,b)?#(得到a='A',?c='B',?b='C')?函數根據move(n,a,b,c)來計算所以move(4,a,b,c)=move(4,'A','C','B')
????????move(3,a,c,b)#(a='A',b='B',c='C')函數根據move(n,a,b,c)來計算所以move(3,a,b,c)=move(3,'A','B','C')
????????????move(2,a,c,b)#(得到a='A',?c='B',?b='C')?函數根據move(n,a,b,c)來計算所以move(2,a,b,c)=move(2,'A','C','B')
????????????????move(1,a,c,b)#(a='A',b='B',c='C')函數根據move(n,a,b,c)來計算所以move(1,a,b,c)=move(1,'A','B','C')
????????????????????print?a,'-->',c??#得到第1個順序為'A'-->'C'
????????????????print?a,'-->',c?#這是move(2,a,c,b)的第二步?得到第2個順序為'A'-->'B'
????????????????move(1,?b,?a,?c)?#由move(2,'A','C','B')推出move(1,b,a,c)的值為move(1,'A','C','B'),
????????????????????print?a,'-->',c?#得出第3個順序為'C'-->'B'
????????????print?a,'-->',c?#得出第4個順序為'A'-->'C'
????????????move(2,?b,?a,?c)?#b='A',a='B',c='C',move(2,a,b,c)?==?move(2,'B','A','C')
????????????????move(1,a,c,b)?#?a='B',b='C',c='A'
????????????????????print?a,'-->',c?#得出第5個順序為'B'-->'A'
????????????????print?a,'-->',c?#得出第6個順序為'B'-->'C'
????????????????move(1,?b,?a,?c)?#a='A',b='B',c='C'
????????????????????print?a,'-->',c?#得出第7個順序為'A'-->'C'
????????#.
????????#.
????????#.
????????#.
????????#.
????#以此類推
????????????????
????print?a,?'-->',?c
????move(4,b,a,c)
????????move(3,a,c,b)
????????????move(2,a,c,b)
????????????????move(1,a,c,b)
????????print?a,?'-->',?c
查看全部 -
Pyhton 不適用于硬件、移動、游戲開發,代碼運行慢,但是代碼量小。
查看全部 -
不錯 通俗易懂。。
查看全部
舉報