在循环中打印元组 python


嗨,我

正在通过 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(或tuplelist(,这似乎真的很乏味。 我的尝试有什么问题?

首先,这很好用

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(

最新更新