python的for循环同时遍历两个list?

发布于 2022-09-06 10:54:48 字数 544 浏览 16 评论 0

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()

遍历..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

成熟稳重的好男人 2022-09-13 10:54:48

當你寫出 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

小梨窩很甜 2022-09-13 10:54:48

好像没有这种用发吧,哈哈。

但是我记得有这种用法:

>>> 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))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文