'''
问题:remove(元素名)使用循环删除多个重名的元素时,若两个本该删除的元素相邻,则会自动跳过第二个元素。
解决办法:
①while循环:删除元素1之后,下标不往后移
②for循环:添加辅助列表
③for循环:倒序删除
④while循环:将判断元素是否在列表中作为循环条件
'''
li=[2,"酸奶","酸奶",1,1]
#错误情况
for i in li:
if i=="酸奶":
li.remove("酸奶")
print(li)
#结果:[2, '酸奶', 1, 1]
#解决办法
#①while循环:删除元素1之后,下标不往后移
i=0
while i<len(li):
if li[i] == "酸奶":
li.remove("酸奶")
else:
i+=1
print(li)
#结果:[2, 1, 1]
# ②for循环:添加辅助列表
help1=[]
for i in li:
if i != "酸奶":
help1.append(i)
print(help1)
#结果:[2, 1, 1]
# ③for循环:倒序删除
for i in li[::-1]:
if i == "酸奶":
li.remove("酸奶")
print(li)
#结果:[2, 1, 1]
#原因:遍历是从后往前遍历的,删除也是从后往前删的,删除后边的,不影响前边元素的下标
# ④while循环:将判断元素是否在列表中作为循环条件
del_ele="酸奶"
while del_ele in li:
li.remove("酸奶")
print(li)
#结果:[2, 1, 1]