逐行打印嵌套列表 \- Python

新手上路,请多包涵

A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]

我正在尽力打印 A 的形式:

 1 2 3
2 3 4
4 5 6

那是在不同的行中,但是如果没有不同行中的所有元素,我将无法这样做。到目前为止,这是我的代码:

 for r in A:
   for t in r:
       print(t,)
    print

这是我的输出:

 1
2
3
2
3
4
4
5
6

看起来真的很简单,我想稍微改变一下就可以了。谢谢!

原文由 quarters 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 752
2 个回答

Use a simple for loop and " ".join() mapping each int in the nested list to a str with map() .

例子:

 >>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
...     print(" ".join(map(str, xs)))
...
1 2 3
4 5 6
7 8 9 10

这里的区别在于我们可以支持任意长度的内部列表。


您的示例未按预期工作的原因是因为您的内部循环正在遍历子列表的每个元素;

 for r in A:  # r = [1, 2, 3]
    for t in r:  # t = 1 (on first iteration)
        print(t,)
    print

并且 print() 默认情况下在末尾打印换行符,除非您使用: print(end="") 我相信如果您使用的是 Python 2.x print t, 会起作用。例如:

 >>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
>>> for xs in ys:
...     for x in xs:
...             print x,
...     print
...
1 2 3
4 5 6
7 8 9 10

但是 print(x,) 不会像您预期的那样工作; Python 2.x 或 3.x

原文由 James Mills 发布,翻译遵循 CC BY-SA 3.0 许可协议

比接受的答案更好

试试这个衬垫 [print(a) for a in A]; 我喜欢一个衬垫!喜欢就点个赞吧

A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
[print(a) for a in A];
[1, 2, 3]
[2, 3, 4]
[4, 5, 6]

如果您不想在打印输出中看到 [] ,那么执行 [print(*a) for a in A];

 A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]
[print(*a) for a in A];
1 2 3
2 3 4
4 5 6

原文由 Albert G Lieu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题