from pprint import *
sites = [['a','b','c'],['d','e','f'],[1,2,3]]
pprint(sites)
for site in sites:
sites.remove(site)
pprint(sites)
Run Code Online (Sandbox Code Playgroud)
输出:
[['a', 'b', 'c'], ['d', 'e', 'f'], [1, 2, 3]]
[['d', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)
为什么不是None,或者是空列表[]?
小智 25
这是因为你正在迭代它时修改一个列表.你永远不应该这样做.
对于这样的事情,你应该复制一下列表并对其进行迭代.
for site in sites[:]:
sites.remove(site)
Run Code Online (Sandbox Code Playgroud)
小智 6
因为在迭代它时调整集合的大小是Python相当于C和C++中未定义的行为.您可能会遇到异常或巧妙的错误行为.只是不要这样做.在这种特殊情况下,可能发生的事情是:
remove操作引起的项目移动,索引1处的项目是从索引2(最后一项)开始的项目.