【问题标题】:Printing tuples in for loops python在for循环python中打印元组
【发布时间】:2018-07-05 07:15:42
【问题描述】:

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

>>> 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(最近一次调用最后一次):文件"",第 1 行,in TypeError: 'int' 对象不可迭代"

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

【问题讨论】:

  • 你选择的变量命名是错误的。您将 a 重新声明为内部循环变量,因此第二次迭代中的 a 变为整数。
  • 好吧,你提供的例子都没有用。你通常会做for nums in a: print(nums)。这里的问题是你已经用你最后一个 for 循环的最终结果覆盖了你的 a 变量,它曾经是一个列表。
  • 好的,我知道了。谢谢!更改它会使用括号打印,而其他方法则不会。这是为什么? @coldspeed
  • 因为在一个中,您正在使用print 函数 并向其传递三个参数。另一方面,您传递给它一个 single argument,它恰好是一个元组。您可以像这样将元组解压到函数调用中for nums in a: print(*nums)

标签: python for-loop tuples


【解决方案1】:

你可以这样做:

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) 连音形式

【讨论】:

    【解决方案2】:

    正如 cmets 所说,您通过在循环中重新分配 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)

    【讨论】:

      【解决方案3】:

      首先,这很好用

      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)
      

      其次,如果不需要扩展元组(或通常任何可迭代的),则不必这样做。这相当于上面的sn -p。 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)期间的状态。这是 duck typing 的一个缺点,例如与 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 2020-06-18
        • 2018-02-04
        • 1970-01-01
        • 2021-08-18
        • 1970-01-01
        相关资源
        最近更新 更多