標籤:指定 切片 迭代 print 函數 包括 isa code 並且
切片
只用一個 : ,表示從頭到尾:
>>> L[:][‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]
切片操作還可以指定第三個參數:第三個參數表示每N個取一個,上面的 L[::2] 會每兩個元素取出一個來,也就是隔一個取一個。
把list換成tuple,切片操作完全相同,只是切片的結果也變成了tuple。
迭代
迭代操作就是對於一個集合,無論該集合是有序還是無序,我們用 for 迴圈總是可以依次取出集合的每一個元素。
注意: 集合是指包含一組元素的資料結構,我們已經介紹的包括:
1 有序集合:list,tuple,str和unicode;
2 無序集合:set
3 無序集合并且具有 key-value 對:dict
例題:請用for迴圈迭代數列 1-100 並列印出7的倍數。
for i in range(1, 100)[6::7]: print i
Python中,迭代永遠是取出元素本身,而非元素的索引。想要取出索引要用
enumerate() 函數
>>> L = [‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]>>> for index, name in enumerate(L):... print index, ‘-‘, name... 0 - Adam1 - Lisa2 - Bart3 - Paul
enumerate() 函數把:
[‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]
變成了類似:
[(0, ‘Adam‘), (1, ‘Lisa‘), (2, ‘Bart‘), (3, ‘Paul‘)]
因此,迭代的每一個元素實際上是一個tuple:
for t in enumerate(L): index = t[0] name = t[1] print index, ‘-‘, name
索引迭代也不是真的按索引訪問,而是由 enumerate() 函數自動把每個元素變成 (index, element) 這樣的tuple,再迭代,就同時獲得了索引和元素本身。
values() 方法實際上把一個 dict 轉換成了包含 value 的list。
但是 itervalues() 方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了產生 list 所需的記憶體。
列印 itervalues() 發現它返回一個
如果一個對象說自己可迭代,那我們就直接用 for 迴圈去迭代它,可見,迭代是一種抽象的資料操作,它不對迭代對象內部的資料有任何要求。
利用 3 層for迴圈的列表產生式,找出對稱的 3 位元。例如,121 就是對稱數,因為從右至左倒過來還是 121。
注意三種方法的思想
L=[]for x in range(1,10): for y in range(10): for z in range(1,10): if x==z : L.append(100*x+10*y+z)print Lprint [100 * x + 10 * y + z for x in range(1, 10) for y in range(10) for z in range(10) if x==z]print [x for x in range(100,1000) if str(x)[0]==str(x)[-1]]
Python(三)