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

For循环迭代的次数少于我在Python中预期的次数

黄昊
2023-03-14
问题内容

我希望下面的循环迭代六次,而不是用python3迭代三遍。我不了解这种行为。我知道列表在删除元素时会发生变化,但是我不知道这会如何影响for循环条件。为什么循环迭代少于六次?

a = [1, 2, 3, 4, 5, 6]
for elem in a:
        del a[0]
        print(a)

问题答案:

您将通过删除循环的每个迭代中的第一个元素del a[0],因此迭代器将分3步清空,因为迭代器将在下一次迭代中删除的元素之后移至该元素。您可以检查迭代器当前所在的元素,以及下面代码中的列表状态

a = [1, 2, 3, 4, 5, 6]
for elem in a:
    print(elem)
    del a[0]
    print(a)

输出是

1
[2, 3, 4, 5, 6]
3
[3, 4, 5, 6]
5
[4, 5, 6]

您可以将其视为指向列表的第一个元素的指针,在每次迭代中删除第一个元素时,该指针跳2个步骤,而6个元素只能跳3次。

通常,修改要迭代的相同列表是一个坏主意。但是如果您确实要a[:]删除列表,则可以迭代列表的副本。

a = [1, 2, 3, 4, 5, 6]
for elem in a[:]:
    del a[0]
    print(a)

输出是

[2, 3, 4, 5, 6]
[3, 4, 5, 6]
[4, 5, 6]
[5, 6]
[6]
[]


 类似资料:
  • 在Django模板中,我想创建一个遍历列表的for循环。在循环过程中,我还希望能够使用循环的迭代次数。 例如,如果有4个元素,那么: 应打印以下内容: 我该怎么做呢?

  • 我一直在读一本面向初学者的书,“第一头HTML5编程”,其中有这样一段代码: 目前,如果我调用,它将返回下一次显示是在下午5:00。我将循环条件更改为“I<=movie.showtimes.length;”但它仍然只运行一次,并且只显示下午5点。循环只迭代一次,即使我重写了这个函数: 不是应该跑两次吗?

  • 如果格式不正确,请原谅,这是我的第一篇帖子。我想看看是否以前发现过这个问题,但我找不到任何人有与我相同的问题。 我试图学习Java,但我无法弄清楚为什么我的for循环没有输出最后一次迭代。我正在完成codeabbey的练习,并相对轻松地完成了前两个。然而,在第三个和第四个问题上,我无法在最后一次迭代中输出我的for循环。 我开始在谷歌上搜索,并想将我的答案与其他人的答案进行比较。当我的代码与我找到

  • 如果我试图在java中查找遍历foreach循环的次数,还有比这更好的方法吗? 我知道我可以只使用一个普通的for循环并拥有一个迭代器I,但我只是想知道是否有一种更优雅的方法来使用foreach.tanks in prevair:) 编辑:正如Jon Skeet指出的,上面的代码将新的按钮实例分配给迭代变量。哎呀。基于其他评论,我相信最实用的使用是一个正常循环。这是我要用的版本。谢谢大家的帮助!

  • 我正在尝试使用For循环将一个随机整数(0-2)添加到一个变量中指定的次数。我遇到的问题是,循环不是每次循环时都使用一个新的随机数,所以,如果我输入9,我只能得到0、9,或者18。 我希望一个对象返回的键“a”和“b”具有不同的数值。