【问题标题】:How to print the List Of Tuples in multiple rows?如何在多行中打印元组列表?
【发布时间】:2019-02-03 10:49:47
【问题描述】:

我有一个包含 9 个元组的列表。我需要在每行打印 3 个元组。但是我只能打印 2 行。我可以知道我哪里出错了吗?

以下是 Jupyter 中使用的代码。

List_Tuples = [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)] 

Tuples_List = []    # To store 3 tuples at a time and print it
j=0
i=0

while i<9:          # Total 9 tuples from index 0 to 8
    if j<3:         # To restrict 3 tuples in a row 
        Tuples_List.append(List_Tuples[i])
        j+=1
        i+=1
        continue


    print(Tuples_List)
    j=0               # Reset j=0 for next row
    Tuples_List = []  # Emptying List for storing next 3 tuples

输出是:

[(1, 1), (1, 2), (1, 3)]

[(2, 1), (2, 2), (2, 3)]

为什么不打印[(3, 1), (3, 2), (3, 3)]

只有当我将条件更改为

时它才会打印 [(3, 1), (3, 2), (3, 3)]
while i <= 9:

列表索引超出范围

【问题讨论】:

  • 在上面的代码中首先修复你的缩进
  • 它在 Jupyter 中正确缩进。
  • 不,它不在任何编辑器中。首先,if 语句之后没有缩进。很难理解你代码的后面部分是否是while 循环的一部分
  • 现在,代码已正确缩进

标签: python python-3.x


【解决方案1】:

这就是我认为您要缩进代码的方式:

List_Tuples = [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)] 

Tuples_List = []
j=0
i=0

while i<9:
    if j<3:
        Tuples_List.append(List_Tuples[i])
        j+=1
        i+=1
        continue
    print(Tuples_List)
    j=0

它没有打印最后一组元组的原因是由于 continue 语句。当循环到达 continue 语句时,它会跳过循环中的所有后续代码并返回到循环的开头。因此最后一次打印永远不会发生。我们可以在循环结束后通过打印TuplesList 来测试。

print(TuplesList)
#[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3,1), (3,2), (3,3)]

【讨论】:

  • 如果我需要打印所有的元组有什么解决方案?
【解决方案2】:

您的代码仅在 i 是 3 的乘积时打印生成的 Tuples_List。但是,这不会打印最后一个列表,因为当 i 达到 9 时循环不会继续,而它应该.

我建议将print 部分包装在另一个条件中,而不是continue,以检查j == 3

while i<9:          -> Total 9 tuples from index 0 to 8
    if j<3:         -> To restrict 3 tuples in a row 
        Tuples_List.append(List_Tuples[i])
        j+=1
        i+=1
    if j == 3:
        print(Tuples_List)
        j=0               -> Reset j=0 for next row
        Tuples_List = []  -> Emptying List for storing next 3 tuples

在线查看结果:http://tpcg.io/b1vqhG

【讨论】:

  • @GtR 在我的回答中,我添加了额外的条件。请在说“它不起作用”之前测试代码。
  • [(1, 1), (1, 2), (1, 3)] [(2, 1), (2, 2), (2, 3)] [(3, 1), (3, 2), (3, 3)] ----------------------------------- ---------------------------------------- IndexError Traceback (最近一次调用最后) in () 5 6 if j 7 Tuples_List.append(List_Tuples[i]) 8 j+=1 9 i+= 1 IndexError: 列表索引超出范围
  • @GtR 你测试我的代码了吗?可能和你想象的不一样。
  • 我刚刚测试过。您的代码给出了带有索引错误的输出。我已经在问题中提到,如果我将条件更改为 while(i 而不是 while(i 并出现索引错误,则会得到输出.
  • @GtR 我的代码保留 i &lt; 9,但将continue 替换为if j == 3,以及缩进调整。请逐字阅读,或者直接点击我在答案末尾添加的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多