正在通过 Youtube 教程系列学习 Python,我刚刚查看的教程解释了如何打印嵌入在list
中的tuple
。视频发布者解释了两种方式,具体如下:
>>> a = [(1,2,3), (4,5,6), (7,8,9)]
>>> for (b, c, d) in a:
... print(b,c,d)
...
1 2 3
4 5 6
7 8 9
>>> for nums in a:
... a,b,c = nums
... print(a,b,c)
...
1 2 3
4 5 6
7 8 9
我尝试了第三种方式:
>>> for nums in a:
... a,b,c = nums
... print(nums)
但收到此错误
"回溯(最近一次调用(:文件 ",第 1 行,在 类型错误:"int"对象不可迭代">
我觉得结论是我应该确保始终以tuple
形式打印tuple
,但如果它是一个很长的tuple
(或tuple
的list
(,这似乎真的很乏味。 我的尝试有什么问题?
首先,这很好用
a = [(1,2,3), (4,5,6), (7,8,9)]
for nums in a:
a,b,c = nums
print(nums)
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
其次,如果不需要扩展元组(或通常任何可迭代元组(,则不必扩展元组。这相当于上面的代码段。for-loop只是遍历第一级对象,不管是什么(在你的例子中是元组(:
a = [(1,2,3), (4,5,6), (7,8,9)]
for nums in a:
print(nums)
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
第三,在循环外定义的循环中重用变量a
是一种不好的做法。之后,在循环之外,a
将是循环最后一次迭代(即 7(期间的状态。这是鸭子打字的缺点,即 例如,与 C 相比,Python 中缺少类型声明
a = [(1,2,3), (4,5,6), (7,8,9)]
for nums in a:
a,b,c = nums
print(nums)
print a
(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
7
你可以简单地做:
a = [(1,2,3), (4,5,6), (7,8,9)]
for tuplet in a:
print (tuplet)
这将打印 (1, 2, 3((4, 5, 6)(7, 8, 9( 以三胞胎形式
正如注释所说,通过在循环中重新分配a
,您已经破坏了列表变量a
。您应该能够通过使用不同的变量名称来解决此问题,例如:
a = [(1,2,3), (4,5,6), (7,8,9)]
for nums in a:
x,y,z = nums
print(x,y,z)
当我这样做时,我得到了以下输出:
(1, 2, 3(
(4, 5, 6)
(7, 8, 9(