当前位置: 首页 > 面试题库 >

for循环和遍历列表

欧阳飞
2023-03-14
问题内容

以下是提供输出的代码段:0 1 2 23 3 3 3由于a[-1]访问列表中的数字3,我期望获得输出。在线给出的解释是“a[-1]每次迭代中更改的价值”,但我不太了解如何或为什么。任何解释都很好!

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

问题答案:

这里发生的是一个列表在循环过程中发生了变异。

让我们考虑以下代码片段:

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

输出为:

[0, 1, 2, 0]
[0, 1, 2, 1]
[0, 1, 2, 2]
[0, 1, 2, 2]

每次迭代:

  • 从内部指针当前指向的位置读取值
  • 立即将其分配给列表中的最后一个元素
  • 在最后一个元素打印在标准输出上之后

就像这样:

  • 内部指针指向第一个元素,为0,最后一个元素被该值覆盖;清单是[0, 1, 2, 0]; 印刷价值是0
  • 内部指针指向第二个元素,即1,最后一个元素被该值覆盖;清单是[0, 1, 2, 1]; 印刷价值是1
  • (…)
  • 在最后一步,内部指针指向最后一个元素;last元素被其自身覆盖-列表在上一次迭代时不会更改;打印的元素也不会改变。


 类似资料:
  • 问题内容: 以下代码使我有些困惑: 我不明白的是那key部分。Python如何识别它只需要从字典中读取密钥?是中的特殊字?还是仅仅是一个变量? 问题答案: 5174 只是一个变量名。 只会循环遍历字典中的键,而不是键和值。要遍历键和值,可以使用以下命令: 对于Python 3.x: 对于Python 2.x: 要测试自己,请将单词更改key为poop。 在替换为,它返回由dict支持的类似set的

  • 我是C语言的新手。我已经开始使用向量,并且注意到在我看到的所有通过索引迭代向量的代码中,循环的第一个参数总是基于向量的。Java我可能会使用ArrayList做这样的事情: 我在C语言中看不到这一点有什么原因吗?是不好的做法吗?

  • 问题内容: 您好,我正在尝试创建一个遍历链表的for循环。对于每条数据,它将单独列出。我正在尝试在此处学习链接列表,因此请不要提供数组建议。有人知道怎么做吗? 示例输出: 187号航班 501航班 我的代码如下: 问题答案: 只需使用增强的for循环,就像使用数组一样:

  • 我得到一个使用下面的代码的锚的列表,然后我想去每个链接。我想出了下面的代码,但是在第一个循环之后,我得到了以下异常 org.openqa.selenium.staleElementReferenceException:过时元素引用:元素未附加到页面文档(会话信息:Chrome=55.0.2883.87) 有没有办法做到这一点,而不需要每次返回页面?

  • 问题内容: 通常我们这样编码: 但是也可以按照以下方式做一些事情: 我想要这样做的真正原因是因为我想使用python-progressbar的自动检测maxval。他们喜欢 问题答案: 您可以与callable一起使用。(您应该传递两个参数,一个用于可调用对象,另一个用于前哨值) 注意 当没有剩余元素并且没有放置哨兵值时,它将阻塞。另外,就像-循环,并且与普通的容器循环不同,它将从队列中删除项目。