我想在 Python 中以相反的顺序遍历一个列表。我在 C#、Java 等中得到它,但在 Python 中没有。
这就是我所拥有的:
lista = [100, 200, 500, 2, 36]
n = len(lista)
for i in len(lista):
print(lista[n])
n = n-1
更糟糕的是,我在线上出现错误print(lista[n])
:它不会让我将“n”作为列表的索引传递。
我想在 Python 中以相反的顺序遍历一个列表。我在 C#、Java 等中得到它,但在 Python 中没有。
这就是我所拥有的:
lista = [100, 200, 500, 2, 36]
n = len(lista)
for i in len(lista):
print(lista[n])
n = n-1
更糟糕的是,我在线上出现错误print(lista[n])
:它不会让我将“n”作为列表的索引传递。
只需使用Python标配的reversed()函数:
对于您的列表,请返回:
关于您的代码及其不起作用的原因:
首先,如果您保存列表长度的值,请使用该变量!
此外,您正在迭代
len(lista)
,也就是说,您正在尝试迭代单个元素,因为它len(lista)
是一个整数。这就像说for i in 5
,这将使您只迭代一次。因此,您可能想要做的是浏览从 0 到该长度的一系列数据。
然后,它是关于每次打印相对于前一个位置为 -1 的元素。
总之,它看起来像这样:
或者,更明确地说,正如FJSevilla 在评论中建议的那样,使用否定提要从最后一个元素开始,从而获得更清晰的索引:
除了基于
reversed()
另一个常见技巧的解决方案是使用切片语法,通常用于提取列表的子集,如lista[inicio:fin]
.切片运算符支持第三个参数,即索引之间的增量。例如,要每 2 个索引拉一次元素:
lista[inicio:fin:2]
. 增量可以是负数,在这种情况下inicio
它必须大于fin
并且向后遍历元素。当增量为负时,如果省略inicio
,则假定列表的末尾,如果省略fin
,则假定列表的开头。将所有这些放在一起会导致
lista[::-1]
列表以相反的顺序返回。以便:一般在python中,可以使用负索引从后面开始。
结果:
可以用索引做一点魔法:
离开:
另一种可能的解决方案是首先以相反的顺序获取列表,使用 reversed 函数很容易做到这一点。然后,您可以正常遍历该新列表。需要注意的是,当您管理的列表大小介于中小型(几千个)之间时,建议使用此方法,否则创建新列表会消耗大量时间和资源。另一方面,使用这种方法通常更具可读性且不易出错。
例如,如果您有一个列表:
你做 L2 = reversed(L) 你得到
然后您可以正常打印,例如:
上面的代码在 python 3 中工作,但你可以在 python2 中实现相同的东西,例如:
另一种方法是:
出口。
对您的代码的帮助可以是
或者另一种方式是:
再加上原始代码,添加范围并交换两行
36 2 500 200 100
[36、2、500、200、100]
36 2 500 200 100
您必须减去一个,因为它会导致错误超出范围
我对 Python 很陌生,但是要向后遍历一个列表,使用 while 循环要容易得多,看...(也可以使用 for,但我更抽象地看待它)