为什么这是一个无穷的for循环?

问题描述 投票:1回答:5

我刚读完Python文档教程的循环技术一章,并且在这里有关于这个男孩的问题:[:]

我了解到它采用字符串的开始和结束索引,所以:

text = "This is text"
text[:] # will return the whole text "This is text" and
tex[:4] # will return "This".

但是当我在这里看到此代码时...

words = ['cat', 'dog', 'cowcowcow']
for w in words[:]:  # Loop over a slice copy of the entire list.
    if len(w) > 6:
        words.insert(0, w)
print words

输出:

['cowcowcow', 'cat', 'dog', 'cowcowcow']

...我不明白for循环中[:]的含义。我只想写

for w in words:

但是当我这样做时,这是一个无尽的while循环,为什么?

python list loops infinite-loop
5个回答
7
投票

[:]表示从列表的开始到列表的范围-本质上是在复制列表(出于可读性的考虑,我通常主张使用list(...)代替它,它的工作相同,并且适用于所有可迭代对象,而不仅是序列) )。


4
投票

[:]创建列表的副本


3
投票

因为使用[:]会创建原始列表的copy


2
投票

在Python中,您无法遍历列表并同时从该列表中删除元素。words[:]返回words的副本。这样,您可以在遍历words的同时修改words[:]


0
投票
a=[1,2,3,4,5]
for i in a:
    if i==1 : 
         a.insert(0,i)
# you can see  endless loop . Because : 
i=1 =a[0]   #after first loop  a=[1,1,2,3,4,5]
# The second loop :
i=1 =a[1] # because   a=[1,1,2,3,4,5]
# after second loop  a=[1,1,1,2,3,4,5]
# So , endless loop , with result a=[1,1,1......,2,3,4,5].
#It very easy .
#If you user :
a=[1,2,3,4,5]
for i in a[:] :
 if i==1 : 
     a.insert(0,i)
#It same  : 
a_copy=a
for i in a:
    if i==1
      a_copy.insert(0,i)
© www.soinside.com 2019 - 2024. All rights reserved.