有没有一种方法可以在 range()
函数中使用步幅 -1?
例如,是否可以使用 range(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()
的例子更适合我想要的。
有没有一种方法可以在 range()
函数中使用步幅 -1?
例如,是否可以使用 range(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()
的例子更适合我想要的。
你可以将步长(包括负步长)作为第三个参数指定,因此
range(10,-11,-1)
提供
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10]
一般而言,尝试并不会有任何成本。您可以直接在解释器中输入此代码并查看其结果。
这个函数的全部文档 在这里记录:
range(start, stop[, step])
但是我更希望鼓励你去尝试玩耍,看看会发生什么。就像你看到的那样,你的直觉是正确的。
for i in range(10, -11, -1):
print(i)
您可能会注意到,如果在范围块中不使用第三个参数,则range函数仅按升序工作。如果没有第三个参数使用范围块,它将不起作用。
for i in range(10,-10)
for i in range(10,-10,-1)
是的,不过您需要通过将步长参数设置为-1来指定您想要向后跨步。
使用:
for y in range(10, -10, -1)
range(10,-10,-1)
会很有帮助。第一个参数是起始步骤,第二个参数是结束步骤,第三个参数是步骤的大小。
当您的范围是升序时,如果需要在两者之间的所有数字,则不需要指定步骤,例如range(-10,10)
或range(-10,-5)
。range(10,-10,-1)
或任何其他较大的步长。如果您喜欢在范围内创建列表:
numbers = list(range(-10, 10))
#逆序遍历列表
l1=[2,4,3]
for i in range (len(l1)-1,-1,-1): print (l1[i])
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()
内置函数却不去阅读文档是毫无意义的。他想要的东西就在那里。 - Gareth Latty