列表理解嵌套循环,多次操作
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
对 this answer 中的星星的一个很好的解释。 tl;dr 版本:如果 line
是 [1, 2, 3]
,print(*line)
等同于 print(1, 2, 3)
,这与 print(line)
不同,后者是 print([1, 2, 3])
。
我同意 Ashwini Chaudhary 的观点,使用列表推导来打印可能永远不是 "right thing to do"。
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
给出如下列表:
[[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
对 this answer 中的星星的一个很好的解释。 tl;dr 版本:如果 line
是 [1, 2, 3]
,print(*line)
等同于 print(1, 2, 3)
,这与 print(line)
不同,后者是 print([1, 2, 3])
。
我同意 Ashwini Chaudhary 的观点,使用列表推导来打印可能永远不是 "right thing to do"。
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