身份:小白
在python学习过程中,学到求100以内质数的时候,碰到一个小问题,求大神指点一下下
a = []
b = []
for i in range(2, 101):
a.append(i)
for j in range(2, i):
if i % j == 0:
b.append(i)
break
在我把“20以内所有元素生成列表a,20以内除1与其本身之外还有其他因数的元素生成列表b”后,接下来:
for循环a列表,如果元素也在b中,就在a列表中移除该元素,打印a列表,最后的结果却是错的:
for i in a:
if i in b:
a.remove(i)
print(a)
# 结果:[2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
而for循环b列表,如果元素也在a中,就在a列表中移除该元素,打印a列表,最后的结果才正确:
for i in b:
if i in a:
a.remove(i)
print(a)
# 结果:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
这是为什么呢?想了半天没想明白,是不是进入哪个误区了啊?/(ㄒoㄒ)/~~