python 列表生成式怎么理解?

z=[x if x%3==0 else x%5==0 for x in range(1,9) ]
print(z)

[False, False, 3, False, True, 6, False, False]
为什么5的地方是True,而不是显示5?这个语法怎么理解比较好?怎样翻译成一个个具体的instruction来理解?

阅读 3.6k
5 个回答

你的代码等效于下面的这一段代码:

z = []
for x in range(1,9):
    if x%3 == 0:
        z.append(x)
    else:
        z.append(x%5 == 0)

print(z)

这样就应该很清楚了吧。。

x if x%3==0 else x%5==0 这个代码得这样理解,if 后面, else之前是条件语句,如果条件语句成立,则显示if之前的表达式,反之,则显示else之后的表达式。

应该是三元表达式的问题

a = 1
b = 0

# 读作:如果a大于b,c就等于a;否则c等于b
c = a if a > b else b
print(c)

这个跟生成器半毛钱也没关系吧。。。。原因楼上说的很清楚了。

你要生成器也是这样吧
`
z=(x if x%3==0 else x%5==0 for x in range(1,9))
print(z)
`

推荐问题
宣传栏