【问题标题】:Why myList = [range(1,10)] does not return a list in python? [duplicate]为什么 myList = [range(1,10)] 在 python 中不返回列表? [复制]
【发布时间】:2018-02-19 00:09:41
【问题描述】:

我试过这个:

myList = [range(1,10)]

print(myList)

得到这个输出:

range(1, 10)

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

【问题讨论】:

  • 注意,格式化代码,缩进四个空格。

标签: python python-3.x


【解决方案1】:

您正在 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

【讨论】:

  • 我是 python 新手,所以从你的回答中我得到的是......生成器是指它必须由函数再次调用或必须在循环中使用?
  • @mohitkaushik 请看我最近的编辑。另外,如果此答案对您有所帮助,请考虑接受。谢谢!
  • @AnthonySottile 感谢您指出这一点。现在已经修复了。
  • @IzaakvanDongen 请查看我最近的编辑。
猜你喜欢
  • 2017-04-03
  • 2020-06-20
  • 2019-01-02
  • 2019-11-14
  • 2018-03-29
  • 2015-08-16
  • 2018-09-26
  • 2017-06-29
相关资源
最近更新 更多