带有数字列表的Python for循环未按预期工作

2024-05-16 01:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试打印列表,删除项目0,然后再次打印列表中所有项目的列表。这很简单,但并不像我预期的那样工作,它没有完成所有列表项的for循环

我首先尝试使用del和pop()方法在列表中使用range函数。这不起作用,所以我一直在使用一个列表,并得到相同的结果

seals = [1,2,3,4,5,6,7,8,9]

for seal in seals:
    print(seals)
    seals.pop(0)

Expected Result
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[6, 7, 8, 9]
[7, 8, 9]
[8, 9]
[9]

Actual Result
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]

Tags: 项目方法函数in列表forrangeresult
2条回答

Python在这里很有趣,所以你必须对他非常清楚:D:

seals = [1,2,3,4,5,6,7,8,9]

for seal in seals[:]:
    print(seals)
    seals.pop(0)

或使用range

seals = [1,2,3,4,5,6,7,8,9]

for seal in range(len(seals)):
    print(seals)
    seals.pop(0)

两者都繁殖:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[6, 7, 8, 9]
[7, 8, 9]
[8, 9]
[9]

如果您的意图是pop关闭值,直到没有更多值为止,那么使用以下内容将该意图写入代码可能更清楚:

seals = [1,2,3,4,5,6,7,8,9]

while seals:
    print(seals)
    seals.pop(0) 

这避免了在迭代同一列表时修改列表的问题

如果您不想在运行时修改密封件,则可以执行以下操作:

seals = [1,2,3,4,5,6,7,8,9]

for i, v in enumerate(seals):
    print(seals[i:])

seals在本文结尾时保持不变

相关问题 更多 >