0

我是 Python 编程的初学者,遇到了这个程序。

此算法用于反转列表:

mylist = [1,2,3,4]
reverse = mylist[:]
for i in range(len(reverse)//2):
    reverse[i], reverse[len(reverse) -i -1] = reverse[len(reverse) -i -1], reverse[i]

该算法基于这样的逻辑,即交换过程只会发生在偶数长度的列表的 len/2 元素或奇数长度的列表的 len/2 元素之前,因为如果交换过程发生到最后一个元素,该清单将保持与最初相同。

我明白下面的部分是做什么的,但是我如何推导出它,请解释一下逻辑:

reverse[len(reverse) -i -1]
4

2 回答 2

0

len(reverse)返回列表具有的元素数。要实际将其用作索引,您需要从中减去 1,因为索引从 0 开始。接下来,i当我们将i位置从列表的两端移开并交换它们时,我们也会从中减去。

因此,如果i=1 reverse[i]指向 2 而reverse[len(reverse)-i-1指向 3。

于 2021-06-20T07:05:05.577 回答
0

您可以只打印这些变量的内容:

lst = [1, 2, 3, 4, 5, 6]
for i in range(len(lst)//2):
    print(i, len(lst) - i - 1)

这将打印

0 5
1 4
2 3

所以,

  • 对于第一个元素的索引 (i = 0),len(lst) - i - 1将返回最后一个元素的索引 (i = 5)。

  • 对于第二个元素的索引 (i = 1),len(lst) - i - 1将返回倒数第二个元素的索引 (i = 4)。

等等。

于 2021-06-20T07:05:47.870 回答