列表理解和 'all' 关键字

List comprehension and 'all' key word

nums = ['90']
print(all([((ele == ele[::-1] and int(ele) > 0) for ele in nums)]))

我对上面代码的期望是打印 False,但它正在打印 True。能否请您解释一下打印的原因?

((ele == ele[::-1] and int(ele) > 0) for ele in nums) 是您的生成器,但随后您将其包装在列表 [((ele == ele[::-1] and int(ele) > 0) for ele in nums)] 中。因此,您传递给 all 的是:

[<generator object <genexpr> at 0x059BE070>]

在这种情况下,所有人都会 return true

你想要的是:

print(all(((ele == ele[::-1] and int(ele) > 0) for ele in nums)))

print(all([(ele == ele[::-1] and int(ele) > 0) for ele in nums]))