Python:如果x>y,范围(x,y)的输出是什么

Python:如果x>y,范围(x,y)的输出是什么,python,range,Python,Range,设x和y为两个整数: 在Python中如何考虑rangex,y这样的x>y? 我在python 2.7和python 3.3中尝试了以下代码: for i in range(10,3): print i 我认为range10,3应该被视为列表[0,3,6,9],但这部分代码没有呈现任何内容。的签名是 范围开始,停止[步] range10,3分别将start和stop设置为10和3,因此,如果要提供step参数,则需要提供start参数: In [1]: range(0, 10, 3

设x和y为两个整数:

在Python中如何考虑rangex,y这样的x>y? 我在python 2.7和python 3.3中尝试了以下代码:

for i in range(10,3):
    print i  
我认为range10,3应该被视为列表[0,3,6,9],但这部分代码没有呈现任何内容。

的签名是

范围开始,停止[步]

range10,3分别将start和stop设置为10和3,因此,如果要提供step参数,则需要提供start参数:

In [1]: range(0, 10, 3) # list(range(0, 10, 3)) in Python3+
Out[1]: [0, 3, 6, 9]
步骤的默认值为1,并引用我之前链接的文档页面

对于正阶跃,范围r的内容由公式r[i]=start+step*i确定,其中i>=0和r[i] 范围10,3为空,因为r[i]您有两个选项:

重新排列输入值

range(0, 10, 3)     # => (0, 3, 6, 9)
编写一个包装函数,为您重新排列它们:

def safe_range(a, b):
    return range(0, max(a,b), min(a,b))

safe_range(3, 10)   # => (0, 3, 6, 9)
编辑:再考虑一下,我明白了;你试着做一些类似的事情

range({start=0,} stop, step)
但是,如果你只给出两个值,就没有办法区分这两个值和

range(start, stop, {step=1})
为了解决这种模糊性,Python语法要求默认值参数只能出现在所有位置参数之后——也就是说,第二个示例是有效的Python,第一个不是。只有两个参数的range将这些参数解释为start和stop。从:

测距站 范围开始,停止[步]

注意,[,步骤]在第二种形式中是可选的。通过提供小于或等于start的stop,同时将step保留为默认值1,您创建了一个空范围。本文件明确将此案例作为示例之一:

>>> range(1, 0)
[]
这一点更加明确:

如果r[0]不满足值约束,则范围对象将为空

如果要提供步长值,必须指定起点:

for i in range(0, 10, 3):

Python拒绝在这里猜测;在start和stop参数中使用变量是合法的,在给定算法的某些运行时,stop值最终等于或低于start;在这种情况下,这样的代码期望范围为空。

默认情况下,步长为1,那么如何添加一个以从10到3?我认为开始为0,这里的步长为3,但我认为我忽略了参数的顺序您应该阅读docs-check@mounaim:文档提供了两个签名。一个有一个参数,另一个有三个参数*,第三个是可选的。@mounaim:你也可以给出否定的步骤,如果x>y,你也会得到一个范围:例如,范围10,3,-1。也可以将答案添加到:但这部分代码没有呈现任何内容。关于-我们在做什么好吧,我忘了第二个系列签名中的步骤是可选的,非常感谢@Martjin