【发布时间】:2022-01-18 23:24:27
【问题描述】:
我试图弄清楚当输出不是一个列表时,单行 for 语句是如何工作的。例如,如果我想打印这些匹配 x 到 x+10 的元组,我有代码:
[print((i2x, xi2xx)) for i2x, xi2xx in zip(range(1,11), range(11,21))]
哪个输出
(1, 11)
(2, 12)
(3, 13)
(4, 14)
(5, 15)
(6, 16)
(7, 17)
(8, 18)
(9, 19)
(10, 20)
>>> [None, None, None, None, None, None, None, None, None, None]
现在我想我明白 print 语句(我将其视为命令)是在 for 循环中执行的,但我想知道 None 的括号列表是否是单行 for 循环的必要输出.用于此的多行 for 循环如下所示:
for i2x, xi2xx in zip(range(1,11), range(11,21)):
print((i2x, xi2xx))
只输出
(1, 11)
(2, 12)
(3, 13)
(4, 14)
(5, 15)
(6, 16)
(7, 17)
(8, 18)
(9, 19)
(10, 20)
我是否遗漏了有关括号如何在 oneline 语句中工作的内容?有没有办法只输出没有None列表的打印语句?
【问题讨论】:
-
就像你的第二个例子是这样做的方式。
-
理解通常用于创建有用的对象。虽然它在这里工作并产生这种无用的输出,但应该首选经典循环。
-
“一行语句”是一个列表理解,根据定义,它创建了一个值列表。它不应被滥用于打印等副作用。
-
对于它的价值,您可以在没有列表理解的情况下在一行中执行此操作:
print(*zip(range(1,11), range(11,21)), sep='\n')。我认为大多数 python 开发人员更喜欢for循环以提高可读性。
标签: python list for-loop output one-liner