请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6093|回复: 4

python3中用map后的输出list导致不能引用

[复制链接]

2

主题

0

好友

18

积分

新手上路

Rank: 1

发表于 2020-4-1 09:36:32 |显示全部楼层
list1=[1,2,3,4,5,6]
print(list1)
list2=map(lambda x:x*2,list1)
print(list(list2))#正常输出[2,4,6,8,10,12]

for i in list(list2):
    print(i)#无输出?

list4=list(list2)
for i in list4:
    print(i)#无输出?

print(type(list4))#输出为<class 'list'>
print(list4)#输出空[]

list3=map(lambda x,y:x+y,list1,list(list2))
print(list(list3))#输出空[]

list2=[1,2,3,7,8,9]#不能直接用上面的list2
list3=map(lambda x,y:x+y,list1,list2)
print(list(list3))#重新定义list2才可正常输出

list3=map(lambda x,y:x+y,list1,list4)
print(list(list3))#输出空[]
好像逻辑正确,为什么会是这样的结果?!希望各大师解答,谢谢您!

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-4-1 12:01:25 |显示全部楼层
是,因为py3的map结果不是list,而是map对象。你要手动转一下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

18

积分

新手上路

Rank: 1

发表于 2020-4-2 11:14:13 |显示全部楼层
上面已转换了,也不行哦
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-4-2 22:14:13 |显示全部楼层
xzl 发表于 2020-4-2 11:14
上面已转换了,也不行哦

list2=list(map(lambda x:x*2,list1))
print(list2)

或者

list2 = list(list2)

你的写法并没有转 list2,你只是把一个迭代器转成list后输出
具体的你可以先了解下 迭代器
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

18

积分

新手上路

Rank: 1

发表于 2020-4-3 11:40:12 |显示全部楼层
crossin先生 发表于 2020-4-2 22:14
list2=list(map(lambda x:x*2,list1))
print(list2)

选择您第一种解法,可以了,第二种不行,谢谢您
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 05:07 , Processed in 0.015858 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部