我找不到python doc article 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)
该代码将在无限循环中运行,但如果我们将for w in
words with
换成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
但是使用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
#...
Python:不允许使用重叠的键和值进行替换 - python我试图将输入数据框中的值洗牌,将这些新值存储到字典中,然后通过将输入数据框值替换为其字典映射来获取输出数据框。但是,我收到“替换键和值不允许的替换”错误。这是我的代码示例:in_df = ['A','B','C'] in_df = pd.DataFrame(in_df,columns=['…
Python __getitem__和in运算符导致奇怪的行为 - python是什么解释了以下行为:class Foo: def __getitem__(self, item): print("?") return 1 f = Foo() 1 in f # prints one ? and returns True 5 in f # prints ? forever until you raise a Keyboa…
在python中检查字典中键的正确方法 - pythonImprove this question 所以一直想知道。假设d为字典...检查key是否在字典中的正确方法(更多pythonic):k in d or k in d.keys() 或者是其他东西?? 参考方案 一律使用k in d 这是O(1)恒定时间操作。替代k in d.keys()是Python 2中的O(N)线性时间操作,在Python 3中充其…
Pythonic迭代范围从1开始的方式 - python当前,如果我要遍历1到n,则可能会使用以下方法:for _ in range(1, n+1): print(_) 有没有一种更干净的方法无需引用n + 1即可完成此操作?如果要迭代通常从1开始的范围(这并不罕见),这似乎很奇怪,我必须指定两次递增:在范围的开头加上1。在范围的末尾加上+ 1。 参考方案 range(1, n+1)不被认为是重复的,但是我可以看…
如何删除具有许多子文件夹的主文件夹中的所有文件? - python我只想删除文件,而不是文件夹和子文件夹?试过这个,但我不想给出条件下的字符示例。for i in glob('path'+ '**/*',recursive = True): if '.' in i: os.remove(i) 我不喜欢这样,因为某些文件夹名称带有“。”在名字里。此外,那里还有许多类…