May*_*wal 6 python list infinite python-3.x
我在python doc文章4.2中找不到有关for循环的代码说明。
它提到了类似的内容:如果我们不复制列表,那么它将为列表打印无限的列表值words = ['cat', 'window', 'defenestrate']
;但如果我们事先使用复制它,则不会"for w in words[:]"
。我需要对此进行解释。
words = ['cat', 'window', 'defenestrate']
for w in words :
if len(w) > 6:
words.insert(0,w)
Run Code Online (Sandbox Code Playgroud)
该代码将在无限循环中运行,但是如果我们将for w in
word with
中的w 交换为word [:]
您[:]
此时创建列表内容的副本,这将是:
words = ['cat', 'window', 'defenestrate'] # equals words[:]
for i, w in enumerate(words[:]):
print(i, w)
if len(w) > 6:
words.insert(0,w)
print("len:", len(words))
#0 cat
#1 window
#2 defenestrate
#len: 4
Run Code Online (Sandbox Code Playgroud)
但是使用words
变量本身,步进循环不会执行任何操作,因为在第一个位置插入时,前进的步骤将被取消:
words = ['cat', 'window', 'defenestrate']
for i, w in enumerate(words):
print(i, w)
if len(w) > 6:
words.insert(0,w)
print("len:", len(words))
#0 cat
#1 window
#2 defenestrate
#len: 4
#3 defenestrate
#len: 5
#4 defenestrate
#len: 6
#5 defenestrate
#len: 7
#6 defenestrate
#len: 8
#7 defenestrate
#len: 9
#...
Run Code Online (Sandbox Code Playgroud)