Python学习之zip函数
生活随笔
收集整理的這篇文章主要介紹了
Python学习之zip函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Python 學(xué)習(xí)之 zip 函數(shù)
問題的引出
有時候,你可能想同時迭代兩個序列。假設(shè)有下面兩個列表:
names = ['anne', 'beth', 'george', 'damon']
ages = [12, 45, 32, 102]
如果要打印名字和對應(yīng)的年齡,可以這樣做:
你可能覺得有點麻煩,尤其是第3行,寫的代碼有點多。有沒有更好的辦法呢?
并行迭代工具zip
Python 提供了一個很有用的并行迭代工具——內(nèi)置函數(shù) zip,它將兩個序列“縫合”起來,并返回一個由元組組成的序列。返回值是一個適合迭代的對象,要查看其內(nèi)容,可使用list將其轉(zhuǎn)換為列表。
>>> list(zip(names, ages)) [('anne', 12), ('beth', 45), ('george', 32), ('damon', 102)]“縫合”后,可在循環(huán)中將元組解包。
>>> for name, age in zip(names, ages): ... print(name, 'is', age, 'years old') ... anne is 12 years old beth is 45 years old george is 32 years old damon is 102 years old >>>函數(shù)zip可用于“縫合”任意數(shù)量的序列。需要指出的是,當(dāng)序列的長度不同時,函數(shù)zip將在最短的序列用完后停止“縫合”。
>>> list(zip(range(5), range(100000000))) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]以下是其他的例子:
>>> a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) # 返回一個對象 >>> zipped <zip object at 0x103abc288> >>> list(zipped) # 用 list() 轉(zhuǎn)換為列表 [(1, 4), (2, 5), (3, 6)] >>> list(zip(a,c)) # 元素個數(shù)與最短的列表一致 [(1, 4), (2, 5), (3, 6)] >>> list(zip(a,b,c)) # 縫合3個序列 [(1, 4, 4), (2, 5, 5), (3, 6, 6)] >>>也可以把列表和元組縫合在一起。
>>> a = (1,2,3) >>> b = [4,5,6] >>> list(zip(a,b)) [(1, 4), (2, 5), (3, 6)]zip(*)的用法
操作符*與zip函數(shù)配合可以實現(xiàn)與zip相反的功能,即將“縫合”的序列拆成多個元組。
>>> a = [1,2] >>> b = [3,4] >>> c = ['a','b'] >>> zipped = zip(a,b,c) # 縫合 >>> a1, a2, a3 = zip(*zipped) # 拆包 >>> a1 (1, 2) >>> a2 (3, 4) >>> a3 ('a', 'b') >>> b1,b2,b3 = zip(*zip(a,b,c)) >>> b1 (1, 2) >>> b2 (3, 4) >>> b3 ('a', 'b')參考資料
[1] http://www.runoob.com/python3/python3-func-zip.html
[2]《Python基礎(chǔ)教程》人民郵電出版社,第3版
總結(jié)
以上是生活随笔為你收集整理的Python学习之zip函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编写一个程序,找到大于平均值的项的数目
- 下一篇: websocket python爬虫_p