为什么myList = [range(1,10)]不会在python中返回一个列表?

时间:2017-09-10 18:18:33

标签: python python-3.x

我试过了:

myList = [range(1,10)]

print(myList)

得到了这个输出:

range(1, 10)

为什么它没有返回列表[1,2,3,4,5,6,7,8,9]?

1 个答案:

答案 0 :(得分:2)

您正在Python3中运行示例,其中range函数返回一个可迭代的。因此,您必须将生成器传递给list函数以强制表达式给出完整列表:

l = list(range(10))

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用生成器,您可以像这样迭代它:

 for i in function_that_yields_generator():
       #do something

您还可以使用函数next()从生成器中获取元素。由于range函数是可迭代的而不是迭代器,因此可以使用:

l = range(10)
new_l = iter(l)
>>next(new_l)
0
>>next(new_l)
1
>>next(new_l)
2

等。

对于迭代器,您可以这样做:

>>s = function_that_yields_generator()
>>next(s)
#someval1
>>next(s)
#someval2
相关问题