在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  網絡安全/ python的for循環(huán)同時遍歷兩個list?

python的for循環(huán)同時遍歷兩個list?

b = [1, 2, 3]
c = [(10, 20), (30, 40), (50, 60)]

for i, j in b, c:
    print(i, j)
ValueError: too many values to unpack (expected 2)
b = [1, 2]
c = [(10, 20), (30, 40)]

for i, j in b, c:
    print(j)
2
(30, 40)

這輸出到底是怎么回事啊, 不能這么遍歷嗎...

為什么我印象中有這種用法呢...

dict.items() 就能用:

for key, value in x.items()

遍歷..

回答
編輯回答
半心人

好像沒有這種用發(fā)吧,哈哈。

但是我記得有這種用法:

>>> a= 1
>>> b= 2
>>> a, b = b, a
>>> print(a, b)
2 1

同時遍歷的話,不知道下面這種能否解決?供參考:

b = [1, 2, 3]
c = [(10, 20), (30, 40), (50, 60)]
for i in zip(b, c):
print(i)
   
>>>(1, (10, 20))
   (2, (30, 40))
   (3, (50, 60))
2017年9月15日 06:09
編輯回答
愿如初

當你寫出 b, c 的時候, Python 會以為你要製造一個 tuple, 所以:

for i, j in b, c:

相當於:

for i, j in (b, c):

b = [1, 2, 3]c = [(10, 20), (30, 40), (50, 60)] 時就相當於:

for i, j in ([1, 2, 3], [(10, 20), (30, 40), (50, 60)]):

所以第一個迭代到的對象是 [1, 2, 3], 而這個 list 有三個元素自然是無法拆解成兩個變量 ij 的。

但如果 b = [1, 2]c = [(10, 20), (30, 40)],則相當於:

for i, j in ([1, 2], [(10, 20), (30, 40)]):

第一個迭代到的對象是 [1, 2], 該 list 有兩個元素恰能 unpack 為 ij,所以下面的語法是能夠順利運行的。

回到你的需求,若要平行迭代兩個 list,你需要的是 zipzip_longest,你可以參考 @Python爬蟲分享 的範例。


我回答過的問題: Python-QA

2017年7月2日 17:15