irx999 发表于 2021-6-24 21:18:10

用map函数映射后的列表无法每个print

本帖最后由 irx999 于 2021-6-24 21:20 编辑

temp2 = map(lambda c : c * 3 ,range(20))
print(list(temp2))
print(type(list(temp2)))
SS = list(temp2)

for s in SS:
    print(s)
print(type(SS))




问题如图所示 我看 都是列表 但是就是无法单个写出

wp231957 发表于 2021-6-24 21:28:34

大列表套小列表

hrpzcf 发表于 2021-6-24 21:42:23

本帖最后由 hrpzcf 于 2021-6-24 21:45 编辑

那是因为在python3中,map函数返回的是一个迭代器,迭代器有个特点就是只能被迭代一次。
所以你第二行print(list(temp2))时迭代器temp2已经被迭代完了,换句话说就是被消耗干净了。
所以后面你list(temp2)多少次得到的一律都是空列表,包括SS(你可以在第4行后面加一行print(SS)看看是不是),所以print(s)根本没有被执行。
解决办法也很简单,注释掉可能消耗temp2的代码就可以。
temp2 = map(lambda c : c * 3 ,range(20))
#print(list(temp2))
#print(type(list(temp2)))
SS = list(temp2)

for s in SS:
    print(s)
print(type(SS))

irx999 发表于 2021-6-24 23:41:55

hrpzcf 发表于 2021-6-24 21:42
那是因为在python3中,map函数返回的是一个迭代器,迭代器有个特点就是只能被迭代一次。
所以你第二行prin ...

非常感谢您
页: [1]
查看完整版本: 用map函数映射后的列表无法每个print