Python While循环条件求值

Python While循环条件求值,python,while-loop,Python,While Loop,假设我有以下循环: i = 0 l = [0, 1, 2, 3] while i < len(l): if something_happens: l.append(something) i += 1 i=0 l=[0,1,2,3] 而我

假设我有以下循环:

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

在while循环中计算的
len(i)
条件是否会在向
l
追加内容时更新?

是的。您的代码可以工作,但使用循环计数器通常被认为不是很“pythonic”。将
用于
也同样有效,并消除了计数器:

>>> 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
如果您需要知道自己在列表中的“距离”,您可以使用
枚举

>>> 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

如果这是您的代码,它将永远不会退出,原因不同:在循环开始时,i