为什么for循环中的值没有改变?

3
为什么在修改了 whole 后,range(len(whole)/2) 的值没有改变?在 for 循环中,你如何称呼 range(len...) 的值?
whole = 'selenium'
for i in range(len(whole)/2):
    print whole
    whole = whole[1:-1]

输出:

selenium
eleniu
leni
en
2个回答

8
range()函数一次性生成一个整数列表,然后for循环对其进行迭代。它不会在每次迭代中重新创建列表,这样效率非常低下。
您可以使用while循环来替代:
i = 0
while i < (len(whole) / 2):
    print whole
    whole = whole[1:-1]
    i += 1

在每次循环迭代中,while条件会被重新测试。


3

range函数创建一个列表

[0, 1, 2, 3]

for循环迭代列表中的值。

列表不会每次都重新创建

但是在普通列表中并非如此。

wq=[1,2,3]

for i in wq:
    if 3 in wq:
        wq.remove(3)
    print i

1
2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接