我正在使用Python 3,我的问题是为什么输出不同?

print([x * x for x in range(2, 5, 2) if x % 4 == 0]) # returns [16]

q = [x * x for x in range(2, 5, 2)]
print(list(filter(lambda x: x % 4 == 0, q))) # returns [4, 16]

最佳答案

print(([x * x for x in range(2, 5, 2) if x % 4 == 0]))

在这里,range的计算结果为[2,4],只有[4]能够通过if条件
q = ([x * x for x in range(2, 5, 2)])
print(list(filter(lambda x: x % 4 == 0, q)))

在这里,q包含每个元素的x*x,因此列表为[2*2, 4*4] = [4, 16],并且两个元素都经过过滤器选择器

关于python - 过滤器和列表理解之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33912110/

10-14 18:03