我刚读完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循环,为什么?
[:]
表示从列表的开始到列表的范围-本质上是在复制列表(出于可读性的考虑,我通常主张使用list(...)
代替它,它的工作相同,并且适用于所有可迭代对象,而不仅是序列) )。
[:]
创建列表的副本
因为使用[:]
会创建原始列表的copy
在Python中,您无法遍历列表并同时从该列表中删除元素。words[:]
返回words
的副本。这样,您可以在遍历words
的同时修改words[:]
。
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)