如何使用索引从Python 3中获取map函数的结果值?

时间:2016-05-09 07:35:25

标签: python python-3.x

我试试这个:

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。

2 个答案:

答案 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