场景:给出一个列表li = [1,2,3,4,6,5,8,12], 如何剔除掉列表中的偶数?
第一种方法:找出要保留的元素,放到临时列表中,再将临时列表赋值给原来的列表。
优点:简单,不易错
缺点:多一个临时列表,代码量增多,占用内存空间
li = [1,2,3,4,6,5,8,12]
temp = [] # 临时列表
for i in li:
if i % 2 != 0:
temp.append(i)
li = temp
print(li)
结果为[1, 3, 5]
第二种方法:直接在列表中进行删除操作
for i in li[:]:
# 注意要用li[:],若用li,则删除不准确
if i % 2 == 0:
li.remove(i)
print(li)
注意:要用li[:],若用li或者range(len(li)),然后进行判断+删除,会删不准确。
原因如下:列表的元素是有序的,每个元素都有下标
1.用li[:],下标和元素搭配是固定不变的
2.单纯用li或者for i in range(len(li)),虽然也是每个元素搭配一个下标,但当删除符合的偶数时,列表长度会发生变化,下标也跟着变化,是一个动态的过程。
我们可以看下<