假设我有以下循环:

i = 0
l = [0, 1, 2, 3]
while i < len(l):
    if something_happens:
         l.append(something)
    i += 1

会不会 len(i) 在 while 循环中评估的条件在附加某些内容时更新 l?

有帮助吗?

解决方案

是的,它会。

其他提示

你的代码可以工作,但是使用循环计数器通常不被认为是非常“Pythonic”。使用 for 效果同样好,并且消除了计数器:

>>> foo = [0, 1, 2]
>>> for bar in foo:
    if bar % 2: # append to foo for every odd number
        foo.append(len(foo))
    print bar

0
1
2
3
4

如果您需要知道您距离列表有多“远”,您可以使用 enumerate:

>>> foo = ["wibble", "wobble", "wubble"]
>>> for i, bar in enumerate(foo):
    if i % 2: # append to foo for every odd number
        foo.append("appended")
    print bar

wibble
wobble
wubble
appended
appended
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top