以单独的行打印列表列表

sko*_*ada 7 python printing list nested-lists python-3.x

我有一份清单清单:

a = [[1, 3, 4], [2, 5, 7]]
Run Code Online (Sandbox Code Playgroud)

我希望输出格式如下:

1 3 4
2 5 7
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下方式,但输出不是所需的方式:

for i in a:
    for j in i:
        print(j, sep=' ')
Run Code Online (Sandbox Code Playgroud)

输出:

1
3
4
2
5
7
Run Code Online (Sandbox Code Playgroud)

在更改打印调用时使用end:

for i in a:
    for j in i:
        print(j, end = ' ')
Run Code Online (Sandbox Code Playgroud)

输出:

1 3 4 2 5 7
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jim*_*ard 12

遍历原始列表中的每个子列表,并在打印调用中将其解压缩*:

a = [[1, 3, 4], [2, 5, 7]]
for s in a:
    print(*s)
Run Code Online (Sandbox Code Playgroud)

默认情况下,分隔设置为,' '因此无需显式提供.这打印:

1 3 4
2 5 7
Run Code Online (Sandbox Code Playgroud)

在您的方法中,您正在迭代每个子列表中的每个元素并单独打印.通过使用print(*s)解压缩打印调用中的列表,这实际上转换为:

print(1, 3, 4)  # for s = [1, 2, 3]
print(2, 5, 7)  # for s = [2, 5, 7]
Run Code Online (Sandbox Code Playgroud)


ail*_*lin 11

oneliner:

print('\n'.join(' '.join(map(str,sl)) for sl in l))
Run Code Online (Sandbox Code Playgroud)

解释:
你可以通过使用join函数转换liststr:

l = ['1','2','3']
' '.join(l) # will give you a next string: '1 2 3'
'.'.join(l) # and it will give you '1.2.3'
Run Code Online (Sandbox Code Playgroud)

所以,如果你想要换行,你应该使用新的行符号.
但是join只接受字符串列表.要将事物列表转换为字符串列表,可以str为列表中的每个项应用函数:

l = [1,2,3]
' '.join(map(str, l)) # will return string '1 2 3'
Run Code Online (Sandbox Code Playgroud)

我们将这个结构应用于列表sl中的每个子列表l