为什么在使用过滤器和地图功能后得到空白列表

Why getting blank list after using filter and map function

#程序映射过滤生成一个元素为偶数立方的列表

#function for even number to use in filter

def even(num):
  if num%2==0:
    return num

def cube(num):
  return num**3   

a=range(1,10)
print(list(a))
b=filter(even,a)
print(list(b))
c=map(cube,b)
print(list(c))

b 是一个生成器。当您使用 list() 构造函数将其转换为 list 时,它已耗尽。如果您注释掉以下行:

print(list(b))

您的代码将按预期工作。

作为旁注,您可以将所有内容写在一行中:

list(map(lambda x: x**3, filter(lambda x: x%2==0, a)))

(但我想你已经知道了)。

输出:

[8, 64, 216, 512]