有没有办法使用跨距为-1的range()函数?例如,使用range(10, -10)代替以下方括号中的值?即以下行:
range()
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()示例将更好地满足我的需要。
f87krz0w1#
您可以将跨距(包括负跨距)指定为第三个参数,因此
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])
但我更想鼓励你们去尝试一下,看看会发生什么。正如你们所看到的,你们的直觉是正确的。
mbjcgjjk2#
是,通过定义步骤:
for i in range(10, -11, -1): print(i)
8qgya5xd3#
除了其他好的答案外,还有一个替代方案:
for y in reversed(range(-10, 11)):
请参阅reversed()的文档。
reversed()
shstlldc4#
您可能会注意到,如果没有第三个参数,范围函数只能按升序工作。如果在范围块中使用而没有第三个参数,它将不工作。
for i in range(10,-10)
上面的循环将不起作用。要使上面的循环起作用,您必须使用第三个参数作为负数。
for i in range(10,-10,-1)
gc0ot86w5#
是的,但是您需要通过将step参数设置为-1来指定要后退。用途:for y in range(10, -10, -1)
for y in range(10, -10, -1)
nnt7mjpx6#
对于您的情况,使用range(10,-10,-1)会很有帮助。第一个参数表示第一步,第二个参数表示最后一步,第三个参数表示该步的大小。当您的范围是升序时,如果您需要range(-10,10)或range(-10,-5)之间的所有数字,则无需指定步数。但是当范围递减时,需要将步长指定为-1、range(10,-10,-1)或任何其他更大的步长。
range(10,-10,-1)
range(-10,10)
range(-10,-5)
but5z9lq7#
如果您希望在以下范围内创建列表:
numbers = list(range(-10, 10))
e0uiprwp8#
总而言之,我认为以下3种方法是最有效和最相关的回答方法:
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))
注意first的否定符号。
second = np.arange(-10, 11)
将其转换为列表,如下所示,或者将其用作numpy.ndarray类型。
to_the_list = first.tolist()
ki1q1bka9#
l1=[2,4,3]对于范围(len(l1)-1,-1,-1)中的i:打印(l1[i])
9条答案
按热度按时间f87krz0w1#
您可以将跨距(包括负跨距)指定为第三个参数,因此
给予
一般来说,这种方法不需要花费任何代价,你可以简单地把它输入到解释器中,看看它会做什么。
这一切都记录在这里:
但我更想鼓励你们去尝试一下,看看会发生什么。正如你们所看到的,你们的直觉是正确的。
mbjcgjjk2#
是,通过定义步骤:
8qgya5xd3#
除了其他好的答案外,还有一个替代方案:
请参阅
reversed()
的文档。shstlldc4#
您可能会注意到,如果没有第三个参数,范围函数只能按升序工作。如果在范围块中使用而没有第三个参数,它将不工作。
上面的循环将不起作用。要使上面的循环起作用,您必须使用第三个参数作为负数。
gc0ot86w5#
是的,但是您需要通过将step参数设置为-1来指定要后退。
用途:
for y in range(10, -10, -1)
nnt7mjpx6#
对于您的情况,使用
range(10,-10,-1)
会很有帮助。第一个参数表示第一步,第二个参数表示最后一步,第三个参数表示该步的大小。当您的范围是升序时,如果您需要range(-10,10)
或range(-10,-5)
之间的所有数字,则无需指定步数。但是当范围递减时,需要将步长指定为-1、
range(10,-10,-1)
或任何其他更大的步长。but5z9lq7#
如果您希望在以下范围内创建列表:
e0uiprwp8#
总而言之,我认为以下3种方法是最有效和最相关的回答方法:
或者,NumPy会更高效,因为它创建了一个如下所示的数组,这比在python中创建和写入条目到列表中要快得多,然后你可以将它转换为列表:
注意first的否定符号。
将其转换为列表,如下所示,或者将其用作numpy.ndarray类型。
ki1q1bka9#
反向遍历列表
l1=[2,4,3]
对于范围(len(l1)-1,-1,-1)中的i:打印(l1[i])