【发布时间】:2018-09-15 20:57:37
【问题描述】:
以下代码的python单行等效项是什么?
l=[]
for i in range(3,5) :
if i==3:
for j in range(0,2):
if i%2:
l.append(i*j)
else:
l.append(i+j)
else:
l.append(i)
print(l)
我尝试使用单行进行嵌套循环,但只有一个条件如下:
print([i*j if i%2 else i+j for i in range(3,5) for j in range(0,2)])
注意:这里我想学习如何在两个循环中使用 if else 条件的嵌套循环使用单行等效项。 另外,如果不可能,请说明原因!
提前致谢:)
【问题讨论】:
-
大多数代码不应该达到这种复杂性。如果确实如此,最好像您那样编写它以保留功能和可读性。列表推导式(这是它们的实际名称)更适合更简单的循环和条件。
-
我们中的一些人来自做这种事情是自然的语言。我其实很喜欢这个问题。 Python 确实让嵌套变得比想象的更困难。
-
我同意,这很有趣,但我肯定必须打开我的解释器并开始尝试让语法完美。
-
三层嵌套是非常传统的,但是python没有把它作为优先级(求助于理解可能只会使代码更加模糊)
标签: python python-3.x list list-comprehension