程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python中enumerate用法、zip用法:並行遍曆、集合的使用及特點

編輯:Python

本文已參與「新人創作禮」活動,一起開啟掘金創作之路。

python中enumerate用法

1、使用場景

當你使用for循環遍曆時,你需要用到兩個參數:

  • 遍曆出的元素
  • 遍曆元素的偏移值,也就是元素的下標

2、用法

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用法:並行遍曆

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:

  • zip可接受任何類型的序列(可迭代對象),包括文件類型。但需要注意的是,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)]
  • 當兩個序列的參數長度不同時,zip以最短的序列來截斷。比如:
L1 = [a,b,c]
L2 = [1,2,3,4]
list(zip(L1,L2))
>>>[(a,1),(b.2),(c,3)]
  • 可以使用zip構造字典
keys = ['name','age','job']
vals = ['ww',23,'student']
d = dict(zip(keys,vals))
>>>{'name' : 'ww', 'age' : 23, 'job' : 'student'}

python中集合的使用以及特點

1、應用一:去重

python中集合的其中一種作用是去除字符串或者列錶中的重複元素。這一功能是十分有用的。比如:

輸出為:

光知道這些是不夠的,使用集合去重的時候有幾個特性需要注意。 我們再來看上述代碼,發現列錶改為集合後裏面的元素的順序改變了,在大多數情況下,我們都想要集合的順序和列錶一樣。所以讀者可以看我另一篇博文 鏈接: python中如何去掉重複元素.

另外筆者發現,當對數字進行集合轉換的時候,數字的順序被自動排序了。請看:

輸出為:

所以得出:

  • 處理字符串時,集合轉換後,元素的排列順序會發生變化;
  • 處理數字時,集合轉換後,元素的順便會自動排序;

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved