2

假设我有以下循环:

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

当附加某些内容时,while 循环中正在评估的len(i)条件是否会更新l

4

2 回答 2

14

是的,它会。

于 2009-05-14T17:19:32.987 回答
3

您的代码可以工作,但使用循环计数器通常不被认为是非常“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
于 2009-05-14T17:40:31.957 回答