具体地,假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个,不同元素在列表中的相对位置不应被改变。这是我们今天要执行的程序:
v = list(eval(input()))
print("before:",v)
for x in v:#正序输出
cnt = v.count(x)
if cnt >= 2:
for i in range(cnt-1):
v.remove(x)
结果:
你们看并没有得到想要的结果,这是什么原因呢:就是一边遍历列表一边修改列表甚至删除列表元素可能使得遍历发生混乱,产生意料之外的结果。修改如下:
v=list(eval(input()))#输入多个元素,生成列表
print("before:",v)#输出开始的列表
for x in v[::-1]:#倒序循环
numbers=v.count(x)#计算相同元素的数量
if numbers >=2 :#如果有重复的
for i in range(numbers-1):
v.remove(x)#就删除前面所有相同的元素,就剩下最后一个
print("after:",v)#输出删除相同元素后的列表
结果:
倒序之后就不会这样了,因为删除该元素的时候并没有循环到该元素,这样就不会发生混乱了。