为什么在使用for loop和print(my_list[I-1])时,我在列表元素中得到了更改,但没有得到该元素的相减



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

my_list=[8,10,6,4]

对于范围内的i(len(my_list((:

print(my_list[i])

对于范围内的i(len(my_list((:

print(i)

结果:

8106.2.4

01.2.3.4

前者for循环给出了列表的元素(使用索引(,而后者提供了其位置,这是可以理解的。但是,当我尝试在两个for循环中添加(-1(,即打印(my_list[I-1](

打印(I-1(相反,它的作用就像元素列表的位置指示器,并给出最后一个索引值4

我期待着第二个循环的结果。有人能向我解释一下为什么打印(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循环中,减去的是索引,而不是该索引号处的Integer。所以要做减法,比如

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

,您得到了列表的最后一个索引,因为循环从0开始,您从中减去1,使其为-1,list[-1]始终返回列表的最后索引

注意:在这里,像上面所做的那样通过for循环迭代列表是不好的做法。你可以通过-简单地做到这一点

for i in my_list:
print(i-1)

结果将保持不变,代码中有一些简洁性

最新更新