先简单介绍一下,我们写程序经常用到for循环,我遇到一个问题,就是我在编写排列组合的过程时,比如14里面选1个
正常代码
re = list(range(0, 13))
for u in re:
a = u
print(re)
但是如果我们要多个循环比如14个抽两个,我们会用到remove这个函数,这个时候bug就出现了,请看下面这个代码
re = list(range(0, 13))
for u in re:
a = u
re.remove(a)
print(re)
当我们for循环in的这个数组,出现在循环节中,当前第1循环的元素被删除时,下一次循环的是3个而不是第二个,原因是当你删除一个元素,整个数组就重构了,for的下一次循环就会按新的数组定位,也就是新的循环。
解决办法:拷贝一下就行
re = list(range(0, 13))
for u in re[:]:
a = u
re.remove(a)
print(re)
或者
re = list(range(0, 13))
for u in re.copy():
a = u
re.remove(a)
print(re)