a = [1, 2, 3, 4, 5]
for i in a:
a[a.index(i)] = i ** 2
print(a)
print(type(a))
#结果 [1, 16, 9, 4, 25]
#结果
#为什么乱序输出
因为你修改了a列表原来的值,所以a[a.index(i)]已经不是原来的 0, 1, 2, 3, 4 了,而是 0, 1, 2, 1, 4
可以在循环中打印一下a列表的值就清楚了
在列表第1次循环的时候,i 是 1 ,a[a.index(i)] = i ** 2,则新的 a = [1, 2, 3, 4, 5] //a.index(i)=0
在列表第2次循环的时候,i 是 2 ,a[a.index(i)] = i ** 2,则新的 a = [1, 4, 3, 4, 5] //a.index(i)=1
在列表第3次循环的时候,i 是 3 ,a[a.index(i)] = i ** 2,则新的 a = [1, 4, 9, 4, 5] //a.index(i)=2
在列表第4次循环的时候,i 是 4 ,a[a.index(i)] = i ** 2,则新的 a = [1, 16, 9, 4, 5] //a.index(i)=1
在列表第5次循环的时候,i 是 5 ,a[a.index(i)] = i ** 2,则新的 a = [1, 16, 9, 4, 25] //a.index(i)=4
所以按照上面的循环方式,结果是 [1, 16, 9, 4, 25]
如果 想要结果为 [1, 4, 9, 16, 25] ,则运行以下代码
a = [1, 2, 3, 4, 5]
for i in range(len(a)):
a[i] = a[i] ** 2
print(a)