我试过了:
myList = [range(1,10)]
print(myList)
得到了这个输出:
range(1, 10)
为什么它没有返回列表[1,2,3,4,5,6,7,8,9]?
答案 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