好的,我已经花了一段时间在这个上面而且无处可去,所以情况如下:
len(hostlist) -> 10810 objects (no duplicates)
subset = []
for host in hostlist:
if is_vm(host):
subset.append(host)
len(subset) -> 630 objects, no duplicates
for host in hostlist:
if host in subset:
hostlist.remove(host)
len(hostlist) -> 10445 objects, no duplicates
**** 10810 - 630 != 10445 ****
is_vm()函数只是检查主机中是否存在几个不同的字符串,并且我已经验证了在第一个for循环之后,temp的大小/内容/状态没有以任何方式被修改完成了。
现在显然这很奇怪。令人更奇怪的是,在再次(重复)运行第二个for循环时,没有更改len(hostlist) - > 10280 - > 10209 - > 10187 - > 10180
随着情节变浓:
len(hostlist) -> 10810 objects (no duplicates)
subset = []
for host in hostlist:
if is_vm(host):
subset.append(host)
len(subset) -> 630 objects, no duplicates
for host in subset:
hostlist.remove(host)
len(hostlist) -> 630 objects, no duplicates
这是一个单线程脚本,没有进行后台修改,所有这些命令都是从交互式提示符运行的。
我错过了一些明显的东西吗?因为如果我理解正确,这两组代码应该在功能上等同!帮助:/