逐行打印嵌套列表 - Python

时间:2015-05-29 05:45:46

标签: python python-3.x for-loop printing nested-lists

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

看起来很简单,我认为一个小改动会做到这一点。谢谢!

8 个答案:

答案 0 :(得分:5)

使用简单的for循环和" ".join()将嵌套列表中的每个int映射到str 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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

方法-1:

我们可以使用列表理解和.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

方法-2:

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

带有逗号的内部print可确保内部列表的元素打印在一行中。 外print确保对于下一个内部列表,它将在下一行打印。

答案 3 :(得分:1)

不带尾随逗号的

print将打印换行符。

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

答案 4 :(得分:1)

Jim Fasarakis Hilliard在Print list of lists in separate lines回答了同样的问题。

在Python 3.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

答案 5 :(得分:0)

如果您使用的是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__模块导入Python 3.x的打印功能。

答案 6 :(得分:0)

for [a,b,c] in A:
   print(a,b,c)

这可能会有所帮助。 但是,如果列表中的元素数量更多或嵌套列表中的元素是变量,则此方法将无效。 下面的代码将在一行的嵌套行中打印所有元素。

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

答案 7 :(得分:0)

使用 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]