首页 > 解决方案 > 如果两个 for 循环之间的条件作为列表理解

问题描述

我正在尝试将以下代码编写为列表理解

l=[]
for x in range(1,10):
    if x<5:
        for j in range(1,3):
            l.append(1)
    else:
        l.append(x**2)
print(l)

结果是

[1, 1, 1, 1, 1, 1, 1, 1, 25, 36, 49, 64, 81]

我努力了

l=[]
l=[(1 for j in range(1,3)) if x<5 else x**2 for x in range(1,10)]
print(l)

但我没有得到正确的结果。有任何想法吗?

标签: pythonlist-comprehension

解决方案


由于您对不同的列表范围有不同的规则,您可以这样做:

[1 for j in range(1,3) for x in range(1,5)] + [x**2 for x in range(5,10)] 

注意:永远不要忽略代码的可读性。


推荐阅读