在for循环python中打印元组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在for循环python中打印元组相关的知识,希望对你有一定的参考价值。

嗨,我正在通过Youtube Tutorial系列学习Python,the tutorial I just viewed解释了如何打印嵌入tuple中的lists。视频发布者解释了两种方式,具体来说:

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

但是收到了这个错误

“Traceback(最近一次调用最后一次):TypeError中的文件”“,第1行:'int'对象不可迭代”

我觉得外卖是我应该确保始终以tuple形式打印tuples,但如果它真的很长tuple(或listtuple),那似乎真的很乏味。我的尝试出了什么问题?

答案

首先,这很好用

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循环只是迭代第一级对象,无论是什么(在你的情况下为元组):

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)

以上是关于在for循环python中打印元组的主要内容,如果未能解决你的问题,请参考以下文章

python中的while循环与for循环怎么样那个比较好用?

为啥你可以在 for 循环中循环一个隐式元组,但在 Python 中却不能?

[Python3]循环控制

python中的if循环怎么样?

简单的for循环实例

在 Python 中使用 for 循环计算元组列表的平均值