我正在使用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/