>>> range(1,11)
给你
[1,2,3,4,5,6,7,8,9,10]
为什么不是1-11?
他们是随机决定这样做的,还是有一些我没有看到的价值?
>>> range(1,11)
给你
[1,2,3,4,5,6,7,8,9,10]
为什么不是1-11?
他们是随机决定这样做的,还是有一些我没有看到的价值?
当前回答
基本上在python range(n)中迭代n次,这是排他的性质,这就是为什么它在打印时不给出最后一个值,我们可以创建一个函数,给出 包含值,这意味着它还将打印范围中最后提到的值。
def main():
for i in inclusive_range(25):
print(i, sep=" ")
def inclusive_range(*args):
numargs = len(args)
if numargs == 0:
raise TypeError("you need to write at least a value")
elif numargs == 1:
stop = args[0]
start = 0
step = 1
elif numargs == 2:
(start, stop) = args
step = 1
elif numargs == 3:
(start, stop, step) = args
else:
raise TypeError("Inclusive range was expected at most 3 arguments,got {}".format(numargs))
i = start
while i <= stop:
yield i
i += step
if __name__ == "__main__":
main()
其他回答
python中的范围(n)返回从0到n-1。分别为(1,n)从1到n-1。 所以,如果你想省略第一个值,同时得到最后一个值(n),你可以使用下面的代码简单地做到这一点。
for i in range(1, n + 1):
print(i) #prints from 1 to n
专属范围确实有一些好处:
首先,对于长度为n的列表,范围(0,n)中的每个项都是有效的索引。
同样,range(0,n)的长度为n,而不是包含range的长度为n+1。
它与基于零的索引和len()结合使用效果很好。例如,如果列表x中有10个项目,它们的编号为0-9。Range (len(x))给出0-9。
当然,人们会告诉你,对于item in x或者index, item in enumerate(x)而不是i in range(len(x))更符合python规则。
切片也是这样工作的:foo[1:4]是foo的第1-3项(请记住,由于从零开始的索引,第1项实际上是第二项)。为了保持一致性,它们应该以相同的方式工作。
我认为它是:“你想要的第一个数字,后面跟着你不想要的第一个数字。”如果你想要1-10,你不想要的第一个数字是11,所以它的范围是(1,11)。
如果在特定的应用程序中它变得很麻烦,那么很容易编写一个小的帮助函数,向结束索引添加1并调用range()。
python中范围的两个主要用途。所有事物都倾向于落入其中一种
整数。使用内置:range(start, stop, step)。在一般情况下,包含stop意味着结束步骤是不对称的。考虑范围(0、5、3)。如果默认行为在结束时输出5,它将被破坏。 浮动桥。这是为数值用途(有时它碰巧也是整数)。然后使用numpy.linspace。
虽然这里有一些有用的算法解释,但我认为它可能有助于添加一些简单的“现实生活”推理,以解释为什么它是这样工作的,在向年轻的新人介绍这个主题时,我发现这很有用:
对于像“range(1,10)”这样的东西,可能会因为认为参数对代表“开始和结束”而产生混淆。
它实际上是开始和“停止”。
现在,如果它是“end”值,那么是的,您可能会期望该数字将作为序列中的最后一项包含在内。但这并不是“结束”。
其他人错误地称该参数为“count”,因为如果你只使用“range(n)”,那么它当然会迭代“n”次。当添加start参数时,这种逻辑就失效了。
所以关键是要记住它的名字:“stop”。 这意味着当到达这个点时,迭代将立即停止。在那之后就没有了。
因此,虽然“start”确实表示要包含的第一个值,但在达到“stop”值时,它会“中断”,而不是在停止之前继续处理“那个值”。
我在向孩子们解释这一点时用的一个比喻是,具有讽刺意味的是,他们比孩子们表现得更好!它不会在它应该停止的时候停止——它会在没有完成它正在做的事情之前立即停止。(他们得到了这个;))
再打个比方——当你开车时,你没有经过停车/让行/让行的标志,结果它就坐在你车旁边或后面了。从技术上讲,当你停下来时,你还没有到达它。它不包括在“你旅途中经过的东西”中。
我希望其中一些有助于向Pythonitos/Pythonitas解释!