在单独的行中打印列表

Print list of lists in separate lines

提问人:skorada 提问时间:8/10/2016 最后编辑:Dimitris Fasarakis Hilliardskorada 更新时间:12/16/2021 访问量:104765

问:

我有一个列表列表:

a = [[1, 3, 4], [2, 5, 7]]

我想要以下格式的输出:

1 3 4
2 5 7

我尝试了以下方式,但输出不是以所需的方式进行:

for i in a:
    for j in i:
        print(j, sep=' ')

输出:

1
3
4
2
5
7

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

for i in a:
    for j in i:
        print(j, end = ' ')

输出:

1 3 4 2 5 7

有什么想法吗?

python list python-3.x 打印 嵌套列表

评论


答:

32赞 Dimitris Fasarakis Hilliard 8/10/2016 #1

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

a = [[1, 3, 4], [2, 5, 7]]
for s in a:
    print(*s)

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

1 3 4
2 5 7

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

print(1, 3, 4)  # for s = [1, 3, 4]
print(2, 5, 7)  # for s = [2, 5, 7]

评论

0赞 arnavlohe15 4/7/2022
如果没有库,您将如何打印此转置?
16赞 ailin 8/10/2016 #2

oneliner:

print('\n'.join(' '.join(map(str,sl)) for sl in l))

说明: 您可以使用 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'

因此,如果您想要换行符,则应使用换行符。
但 join 只接受字符串列表。要将事物列表转换为字符串列表,您可以为列表中的每个项目应用函数:
str

l = [1,2,3]
' '.join(map(str, l)) # will return string '1 2 3'

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

3赞 nalzok 8/10/2016 #3

您可以执行以下操作:

>>> lst = [[1, 3, 4], [2, 5, 7]]
>>> for sublst in lst:
...     for item in sublst:
...             print item,        # note the ending ','
...     print                      # print a newline
... 
1 3 4
2 5 7
1赞 Vinit Pillai 1/19/2018 #4
def print_list(s):
    for i in range(len(s)):
        if isinstance(s[i],list):
            k=s[i]
            print_list(k)
        else:
            print(s[i])
            
s=[[1,2,[3,4,[5,6]],7,8]]
print_list(s)

您可以在列表中输入列表.....然而,一切都会按照你的期望被打印出来。

输出:

1
2
3
4
5
6
7
8

评论

0赞 DuDa 2/19/2021
请再次阅读问题,因为此答案并不能解决问题的问题。
1赞 Richard Gonzalez 6/6/2020 #5

我相信这很简单:

a = [[1, 3, 4], [2, 5, 7]]   # defines the list
    
for i in range(len(a)):      # runs for every "sub-list" in a
    for j in a[i]:           # gives j the value of each item in a[i]
        print(j, end=" ")    # prints j without going to a new line
    print()                  # creates a new line after each list-in-list prints

输出

1 3 4 
2 5 7 
1赞 Rajasheker Reddy Dommata 7/11/2020 #6
a = [[1, 3, 4], [2, 5, 7]]
for i in a:
    for j in i:
        print(j, end = ' ')
    print('',sep='\n')

输出:

1 3 4
2 5 7

评论

3赞 Amit Verma 7/11/2020
请在您的答案中添加一些描述,并解释它是如何工作的并解决问题。
0赞 Tomerikoo 6/21/2021
你最后的印刷品无缘无故地令人困惑。...print('',sep='\n') == print()
1赞 Arslan Ahmad 12/25/2020 #7

还有另一种方法可以显示列表,而不是将它们排列在子列表中:

tick_tack_display = ['1', '2', '3', '4', '5', '6', '7', '8', '9']

loop_start = 0
count = 0
while loop_start < len(tick_tack_display):
     print(tick_tack_display[loop_start], end = '')
     count +=1
     if count - 3 == 0:
       print("\n")
       count = 0
     loop_start += 1

输出:

123
456
789
1赞 Subham 2/19/2021 #8
lst = [[1, 3, 4], [2, 5, 7]]
 
def f(lst ):
    yield from lst


for x in f(lst):
    print(*x) 

使用“yield from”...

产生输出

1 3 4
2 5 7

[Program finished] 
1赞 Amir Hossein Hajianpour 5/12/2021 #9

有一种更简单的单行方法:

a = [[1, 3, 4], [2, 5, 7]] # your data
[print(*x) for x in a][0] # one-line print

结果将如您所愿:

1 3 4
2 5 7

确保将 添加到列表推导的末尾,否则,最后一行将是与列表长度相等的值列表。[0]None