逐行打印嵌套列表 - Python

Print a nested list line by line - 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

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

for r in A:
    print '%d %d %d' % tuple(r)

print 没有尾随逗号将打印换行符。

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

如果你在 Python 3.x:

print(*('{} {} {}'.format(*r) for r in A), sep='\n')

或:

print(*('%d %d %d' % tuple(r) for r in A), sep='\n')

如果没有,你可以从__future__模块导入Python3.x的打印函数。

使用简单的 for 循环和 " ".join() 将嵌套列表中的每个 int 映射到具有 map()str

示例:

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

方法一:

我们可以使用列表理解和 .join() 运算符。

>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]

>>> for item in my_list:
        print ' '.join(str(x) for x in item)

1 2 3
2 3 4
4 5 6

方法二:

>>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]

>>> for item in my_list:
        for x in item:
            print x,
        print 

1 2 3
2 3 4
4 5 6

Inner print with a comma 确保内部列表的元素打印在一行中。 外部 print 确保对于下一个内部列表,它在下一行打印。

Jim Fasarakis Hilliard 在 中回答了同样的问题。

在Python3.x中我们可以使用:

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

for i in A:
        print(*i)

对应的输出为:

1 2 3
2 3 4
4 5 6
for [a,b,c] in A:
   print(a,b,c)

这可能会有所帮助。 但是如果列表中的元素数量更多或者嵌套列表中的元素是可变的,这将不起作用。 下面的代码将在单行中打印嵌套列表的所有元素。

for b in A:
    for p in b:
         print(p,end=" ")
    print()

使用yield from

lst = [[1, 3, 4], [2, 5, 7]]
 
def f(lst ):
    yield from lst


for x in f(lst):
    print(*x) 
1 3 4
2 5 7

[Program finished] 

试试这个衬垫 [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