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函数转换list成str:
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