示例代码:
bitbake -c do_populate_sdk custom-qt5-image
使用上面的代码,第一行生成的p = map(some_logic)
print(list(p)) # HERE
p = filter(some_logic, p)
print(list(p))
始终是相同的。但是通过添加注释 HERE 的行,最后一次打印将p
作为输出。如果没有 HERE 行,则上一个[]
会提供正确的print
内容。
造成这种情况的原因是什么?
答案 0 :(得分:3)
当您使用map
调用的结果时,它将被消耗:
>>> p = map(int, ['1', '2'])
>>> p
<map object at 0x02C878B0>
>>> list(p)
[1, 2]
>>> list(p)
[]
您应该将更改map
的结果存储到list
:
>>> p = list(map(int, ['1', '2']))
>>> p
[1, 2]
>>> p = list(filter(lambda x: x == 1, p))
>>> p
[1]
请注意filter
同样的情况,因此我已将其更改为list
。