有人可以解释这个 python 代码是如何工作的吗?
Could someone explain how this python code works?
这几天一直在想一段代码,看不懂。
我担心这真的很简单,但仍然......我必须知道它是如何工作的,这让我很困扰。提前致谢。
a = [1,1,2,3,5,8]
for a[1] in a:
pass
print(a)
这段代码的输出是:
[1,8,2,3,5,8]
这是怎么发生的?
您正在迭代更新a[1]
。
由于最后一个值是8,所以a[1]
终究变成了8。
正如 Kota Mori 所说,您正在递归更新它,但这可能很难找到直觉,它也有助于打印值。看看这个修改后的代码:
a = [1,1,2,3,5,8]
for a[2] in a:
print(a[2])
pass
print(a)
那将打印
1
1
1
3
5
8
[1, 1, 8, 3, 5, 8]
所以您可以看到,即使在开始时,它的值也是 1 而不是 2。那是因为这是您在迭代时获得的第一个值。本质上它设置 a[2] = a[0].
当它完成循环时,a[2] 被设置为最后一个值“8”,这就是它为您提供结果的原因。
循环实际上等同于:
for x in a:
a[1] = x
所以每次循环,它都会将 a[1]
设置为列表的当前元素。最后,它包含列表的最后一个元素。
这几天一直在想一段代码,看不懂。 我担心这真的很简单,但仍然......我必须知道它是如何工作的,这让我很困扰。提前致谢。
a = [1,1,2,3,5,8]
for a[1] in a:
pass
print(a)
这段代码的输出是:
[1,8,2,3,5,8]
这是怎么发生的?
您正在迭代更新a[1]
。
由于最后一个值是8,所以a[1]
终究变成了8。
正如 Kota Mori 所说,您正在递归更新它,但这可能很难找到直觉,它也有助于打印值。看看这个修改后的代码:
a = [1,1,2,3,5,8]
for a[2] in a:
print(a[2])
pass
print(a)
那将打印
1
1
1
3
5
8
[1, 1, 8, 3, 5, 8]
所以您可以看到,即使在开始时,它的值也是 1 而不是 2。那是因为这是您在迭代时获得的第一个值。本质上它设置 a[2] = a[0].
当它完成循环时,a[2] 被设置为最后一个值“8”,这就是它为您提供结果的原因。
循环实际上等同于:
for x in a:
a[1] = x
所以每次循环,它都会将 a[1]
设置为列表的当前元素。最后,它包含列表的最后一个元素。