Crossin的编程教室

标题: python3中用map后的输出list导致不能引用 [打印本页]

作者: xzl    时间: 2020-4-1 09:36
标题: python3中用map后的输出list导致不能引用
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))#输出空[]
好像逻辑正确,为什么会是这样的结果?!希望各大师解答,谢谢您!


作者: crossin先生    时间: 2020-4-1 12:01
是,因为py3的map结果不是list,而是map对象。你要手动转一下
作者: xzl    时间: 2020-4-2 11:14
上面已转换了,也不行哦
作者: crossin先生    时间: 2020-4-2 22:14
xzl 发表于 2020-4-2 11:14
上面已转换了,也不行哦

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

或者

list2 = list(list2)

你的写法并没有转 list2,你只是把一个迭代器转成list后输出
具体的你可以先了解下 迭代器
作者: xzl    时间: 2020-4-3 11:40
crossin先生 发表于 2020-4-2 22:14
list2=list(map(lambda x:x*2,list1))
print(list2)

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




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5