列表理解嵌套循环,多个操作

时间:2015-02-25 04:11:17

标签: python list-comprehension

给出如下列表:

[[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

有没有办法让它在处理每个内部列表后中断到新行?

5 个答案:

答案 0 :(得分:2)

你可以这样做。

>>> 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

答案 1 :(得分:1)

您可以执行以下操作:

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

给出:

1 2 3
4 5 6
7 8 9

答案 2 :(得分:1)

>>> 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])。< / p>

答案 3 :(得分:1)

我同意Ashwini Chaudhary的说法,使用列表理解来打印可能永远不是“正确的事情”。

Marcin的回答可能是最好的单线和安德鲁的可读性胜利。

为了回答被问到的问题...

>>> 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]

答案 4 :(得分:0)

试试这个: 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