python - for 循环和遍历列表

标签 python for-loop indexing

下面是一段代码,它给出了输出:0 1 2 2。我期望输出 3 3 3 3 因为 a[-1] 访问列表中的数字 3。网上给出的解释说“a[-1] 的值在每次迭代中都会发生变化”,但我不太明白如何或为什么。任何解释都会很棒!

a = [0, 1, 2, 3]
for a[-1] in a:
    print(a[-1])

最佳答案

在执行 for a[-1] in a 时,实际上是遍历列表并将当前元素的值临时存储到 a[-1] 中。

您可以按照以下说明查看循环:

a[-1] = a[0] # a = [0, 1, 2, 0]
print(a[-1]) # 0
a[-1] = a[1] # a = [0, 1, 2, 1]
print(a[-1]) # 1
a[-1] = a[2] # a = [0, 1, 2, 2]
print(a[-1]) # 2
a[-1] = a[3] # a = [0, 1, 2, 2]
print(a[-1]) # 2

所以,当你在第三个元素上时,那么 2 被存储到 a[-1] (其值为 1,但之前是 0 和开始时是 3)。

最后,当谈到最后一个元素(以及迭代结束)时,存储在 a[-1] 中的最后一个值是 2 这解释了原因它被打印了两次。

关于python - for 循环和遍历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34695538/

相关文章:

python - 在 python 中进行 mysql 查询的更快方法

python - 如何让 python XOR 解密多行字符串?

python - ValueError : not enough values to unpack (expected 2, 得到 1) 但我提供了 2 个值

python - 同时按行和列降序对 Dataframe 进行排序

MySQL 查询 - 为什么在这种情况下不使用索引?

iphone - sqlite 索引性能建议

python - 从视频/图像中提取元数据

java - 查看远程服务器上运行的java进程

javascript - 在 for 循环中在对象中添加 +1 键

Python - 如何有效地迭代字典的子集?