日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习之zip函数

發(fā)布時間:2025/3/15 python 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习之zip函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python 學(xué)習(xí)之 zip 函數(shù)

問題的引出

有時候,你可能想同時迭代兩個序列。假設(shè)有下面兩個列表:

names = ['anne', 'beth', 'george', 'damon']
ages = [12, 45, 32, 102]
如果要打印名字和對應(yīng)的年齡,可以這樣做:

>>> names = ['anne', 'beth', 'george', 'damon'] >>> ages = [12, 45, 32, 102] >>> for i in range(len(names)): ... print(names[i], 'is', ages[i], 'years old') ... anne is 12 years old beth is 45 years old george is 32 years old damon is 102 years old >>>

你可能覺得有點麻煩,尤其是第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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。