Python 3.x Python range()具有负步长

Python 3.x Python range()具有负步长,python-3.x,Python 3.x,有没有办法将range()函数与stride-1一起使用 例如,使用范围(10,-10)而不是下面方括号内的值 即以下行: for y in range(10,-10) 而不是 for y in [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]: 显然,可以用另一种循环更优雅地实现这一点,但是range()示例对于我想要的效果会更好。是的,通过定义一个步骤: for i in range(10, -11, -1): pri

有没有办法将
range()
函数与stride-1一起使用

例如,使用
范围(10,-10)
而不是下面方括号内的值

即以下行:

for y in range(10,-10)
而不是

for y in [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]:

显然,可以用另一种循环更优雅地实现这一点,但是
range()
示例对于我想要的效果会更好。

是的,通过定义一个步骤:

for i in range(10, -11, -1):
    print(i)

可以将步幅(包括负步幅)指定为第三个参数,以便

range(10,-11,-1)
给予

一般来说,尝试它不需要任何费用。您只需在解释器中键入它,就可以看到它的作用

这些都是:


但我最想鼓励的是你四处玩玩,看看会发生什么。正如您所看到的,您的直觉是正确的。

是的,但是您需要通过将step参数设置为-1来指定要后退

使用:


对于范围为(10,-10,-1)的y

除了其他好的答案之外,还有一个备选答案:

for y in reversed(range(-10, 11)):

请参阅文档。

您可能会注意到,范围函数仅按升序工作,没有第三个参数。如果在没有范围块中的第三个参数的情况下使用,它将不起作用

for i in range(10,-10)
上述循环将不起作用。 要使上述循环工作,必须使用第三个参数作为负数

for i in range(10,-10,-1) 

如果您更喜欢在范围内创建列表:

numbers = list(range(-10, 10))

总而言之,这三种方法是我认为最有效和最相关的回答方法:

first = list(x for x in range(10, -11, -1))

second = list(range(-10, 11))

third = [x for x in reversed(range(-10, 11))]
或者,NumPy会更高效,因为它创建了一个如下所示的数组,这比在python中创建项目并将其写入列表要快得多。然后可以将其转换为列表:

import numpy as np

first = -(np.arange(10, -11, -1))
注意第一个的否定符号

second = np.arange(-10, 11)
将其转换为以下列表或用作numpy.ndarray类型

to_the_list = first.tolist()

你可能是对的,这是一个弱点。也许积极的鼓励会更好…我认为这个评论是公平的。我确实在解释器中尝试过,但我没有迈出一大步。我认为这个评论是完全公平的——提到
range()
内置,但不去读文档是毫无意义的。他想要的就在那里。虽然我最初的回答没有那么有建设性,但还是支持@bernie,因为他鼓励我改进它。这正是我想要的。非常感谢,我唯一缺少的是-1这张不幸的照片没有打印-10。。。从10到-9。聪明的选择!
second = np.arange(-10, 11)
to_the_list = first.tolist()