【问题标题】:Python range( ) is not giving me a list [duplicate]Python range() 没有给我一个列表[重复]
【发布时间】:2013-10-16 14:16:43
【问题描述】:

遇到 Python 范围的初学者问题。

我正在尝试生成一个列表,但是当我输入时:

def RangeTest(n):

    #

    list = range(n)
    return list

print(RangeTest(4))

打印的是range(0,4)而不是[0,1,2,3]

我错过了什么?

提前致谢!

【问题讨论】:

  • 不要使用list作为变量名,除非你特别想屏蔽内置类型。

标签: python range


【解决方案1】:

您使用的是 Python 3,其中 range() 返回“不可变序列类型”而不是列表对象 (Python 2)。

你会想要做的:

def RangeTest(n):
    return list(range(n))

如果你习惯了 Python 2,那么range() 相当于 Python 2 中的xrange()


顺便说一句,不要覆盖list 内置类型。正如我在回答中所展示的那样,这甚至会阻止您使用 list()

【讨论】:

  • 啊,刚刚意识到 list 是内置的...
  • 谢谢!解决了我的问题...
  • @R14 不客气 :)。一定要accept the answer :)
  • @Haidro, This will prevent you from even using list() as I have shown in my answer. - list 类型仍可用作 __builtins__.list
  • @GrijeshChauhan 是的。 zip()map()filter() 在 python 3 中都返回迭代器。您可以在 python 2 中使用 itertools 模块执行此操作。我想给你链接,但我在用手机,抱歉
猜你喜欢
  • 2011-11-03
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 2018-12-15
  • 2013-12-29
相关资源
最近更新 更多