在Python3中删除range()函数中start和step的默认值的原因是什么?

问题描述 投票:-1回答:1

我正在学习Python3,正如我在过去看到的那样,使用Python2,可以通过传递一个参数来创建一个带有range()的数字列表,这个参数将是列表中的last number of list + 1

range(4) # == [0, 1, 2, 3]

并且startstep值默认为0和1。

但是在Python3中出于某种原因,不再可能省略这两个参数,并且对于相同的结果,我们需要使用list()函数包装range()函数:

range(0, 4, 1) # == range(0, 4)
range(4) # == range(0, 4)
list(range(4)) # == [0, 1, 2, 3]

问题(S): 这背后的原因是什么?为什么功能改变了这种方式?这有充分的理由吗?

附:或者我可能做错了什么。这里,我一般都在谈论range()函数,它是用于for循环,只是为了创建一个列表或用于任何其他目的

python python-3.x python-2.7
1个回答
1
投票

不幸的是,你被范围内的repr误导了:

>>> range(4)
range(0, 4)

它实际上是相同的接口,但现在返回一个懒惰生成的sequence,而不是列表。您可以迭代范围实例以使用值:

>>> list(range(4))
[0, 1, 2, 3]

有关此更改的更多详细信息,请参阅Python range() and zip() object type

© www.soinside.com 2019 - 2024. All rights reserved.