本文已參與「新人創作禮」活動,一起開啟掘金創作之路。
當你使用for循環遍曆時,你需要用到兩個參數:
enumerate函數返回一個生成器對象,此對象支持迭代協議,之後博文再做討論。意思就是說調用函數後,會返回一個元組(index,value)。
S = [‘a’,‘b’,‘c’]
for (i,value) in enumerate(S):
print(i, 'and', value)
>>>
0 and a
1 and b
2 and c
使用enumerate函數可以同時得出元素和元素的下標,省略了一些代碼操作,比較方便。
python中內置的zip函數可以讓我們使用for來進行多個序列的遍曆。例如:
L1 = [1,2,3,4]
L2 = [5,6,7,8]
lis = list(zip(L1,L2))
print(lis)
>>>[(1,5),(2,6),(3,7),(4,8)]
for (x,y) in zip(L1,L2):
print(x,y,"=",x+y)
>>>
1 5 = 6
2 6 = 8
3 7 = 10
...
...
...
上例1中,zip創建元組對存放到列錶中。例2中使用for來遍曆元組對。也就是說在循環中掃描了L1和L2。 這裏我們初步認識了zip函數。我們更深入的來看zip:
L1 = [1,2,3,4]
L2 = [5,6,7,8]
L3 = [4,3,2,1]
list(zip(L1,L2,L3))
>>>[(1,5,4),(2,6,3),(3,7,2),(4,8,1)]
L1 = [a,b,c]
L2 = [1,2,3,4]
list(zip(L1,L2))
>>>[(a,1),(b.2),(c,3)]
keys = ['name','age','job']
vals = ['ww',23,'student']
d = dict(zip(keys,vals))
>>>{'name' : 'ww', 'age' : 23, 'job' : 'student'}
python中集合的其中一種作用是去除字符串或者列錶中的重複元素。這一功能是十分有用的。比如:
輸出為:
光知道這些是不夠的,使用集合去重的時候有幾個特性需要注意。 我們再來看上述代碼,發現列錶改為集合後裏面的元素的順序改變了,在大多數情況下,我們都想要集合的順序和列錶一樣。所以讀者可以看我另一篇博文 鏈接: python中如何去掉重複元素.
另外筆者發現,當對數字進行集合轉換的時候,數字的順序被自動排序了。請看:
輸出為:
所以得出: