簡體   English   中英

列表理解嵌套循環,多種操作

[英]List Comprehension Nested Loop, Multiple Operations

給出如下列表:

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

我試圖僅使用列表理解來使輸出看起來像這樣:

1 2 3
4 5 6
7 8 9

現在我有這個:

[print(x,end="") for row in myList for x in row]

這僅輸出:

1 2 3 4 5 6 7 8 9

處理每個內部列表后,是否有辦法使其換行?

您可以像下面這樣。

>>> l = [[1,2,3],[4,5,6],[7,8,9]]
>>> for i in l:
        print(' '.join(map(str, i)))


1 2 3
4 5 6
7 8 9

您可以執行以下操作:

print("\n".join(" ".join(map(str, x)) for x in mylist))

給出:

1 2 3
4 5 6
7 8 9
>>> l = [[1,2,3],[4,5,6],[7,8,9]]
>>> for line in l:
        print(*line)
1 2 3
4 5 6
7 8 9

這個答案很好地解釋了星星。 tl; dr版本:如果line[1, 2, 3] ,則print(*line)等效於print(1, 2, 3) ,這與print(line)print([1, 2, 3])

我同意Ashwini Chaudhary的觀點,即使用列表理解來打印可能永遠不是“正確的事情”。

Marcin的答案可能是最好的一線客,而Andrew的可讀性則勝出。

為了回答所提出的問題...

>>> from __future__ import print_function # python2.x only
>>> list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> [print(*x, sep=' ') for x in list]
1 2 3
4 5 6
7 8 9
[None, None, None]

試試這個: print("\\n".join([' '.join([str(val) for val in list]) for list in my_list]))

In [1]:  my_list = [[1,2,3],[4,5,6],[7,8,9]]

In [2]: print("\n".join([' '.join([str(val) for val in list]) for list in my_list]))

1 2 3
4 5 6
7 8 9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM