当使用 for 循环和 print(my_list[i-1]) 时,为什么我得到列表元素的变化而不是该元素的减去值

Why am I getting a change in list elements but not the subtracted value of that element, when using for loop and print(my_list[i-1])

我最近开始学习 python 并且目前正在学习基础知识,所以如果这个问题听起来很愚蠢,请接受我的原谅。在学习冒泡排序算法时,我对列表的索引行为有点困惑。 例如: 代码

my_list = [8,10,6,2,4]

我在范围内(len(my_list)):

print(my_list[i])

我在范围内(len(my_list)):

print(i)

结果:

8 10 6个 2个 4

0 1个 2个 3个 4

前者for循环给出列表的元素(使用索引),后者提供其位置,这是可以理解的。但是当我尝试添加 (-1) 即 print (my_list[i-1])print(i-1) 在两个 for 循环中,我希望 -1 表现得像一个简单的负数,并从第一个 for 循环中的索引元素中减去一个值,即 8-1=7

相反,它的作用类似于元素列表的位置指示器,并给出最后一个索引值 4.

我期待第二个循环的结果。有人可以向我解释为什么 print(my_list[i-1]) 实际上是在改变列表元素的选择,而不是从列表元素本身减去值 1,即[8(-1), 10(-1), 6(-1)...

提前致谢。

表达式my_list[i-1]中的列表索引是括号中的部分,即i-1。因此,通过在那里减去,您确实在修改索引。相反,如果您想修改列表中的值,即索引指向的内容,您可以使用 my_list[i] - 1。现在,减法发生在检索列表值之后。

此处当您尝试 运行 第一个 for 循环 -

my_list = [8,10,6,2,4]
for i in range(len(my_list)):
    print(my_list[i-1])

在 for 循环中,您减去的是索引,而不是该索引号处的整数。所以为了做到这一点,做减法,比如 -

for i in range(len(my_list)):
    print(my_list[i]-1)

你得到了列表的最后一个索引,因为循环从 0 开始,你从中减去 1 并使它成为 -1 并且 list[-1] 总是 returns列表的最后一个索引。

注意:像上面那样通过 for 循环迭代列表并不是一个好习惯。你可以简单地通过 -

for i in my_list:
    print(i-1)

结果将保持不变,但代码会更加简洁