我试试这个:
def test(x):
return x**2
a = map(test,[1,2,3])
如果我得到这样的值:
for i in a:
print(a)
我会得到1,4,9
,这很有效。
但如果我这样做:a[0]
。将引发错误。
我知道这是因为map函数的结果是map class:
type(map(test,[1,2,3])) == <class 'map'>
不可接种。
那么如何使用索引来获取map函数的结果值?
注意:此行为特定于python 3。
答案 0 :(得分:1)
将map
对象转换为list
对象:
a = list(map(test,[1,2,3]))
然后您可以使用列表索引来访问各个元素。
答案 1 :(得分:1)
python 3中的内置map()函数返回一个迭代器。一旦你使用了迭代器或者它耗尽了,它就不会再产生你的结果了。
a = map(lambda x: x**2, [1,2,3])
for i in a: print(a)
结果:
1
4
9
现在试试,
a.__next__()
它将返回StopIteration
错误,因为迭代器已经用尽。
要使用索引,您可以按照上一个答案中的建议使用list
。