python list 删除重复元素:list切片删除元素后,如何使切片值变化?

#下面代码问题是:输出的两次a[i + 1:]的值无变化,如何使其有变化?
a=[2,11,2,2,11,3,4,5]
n_aa=len(a)-1
for i in range(n_aa):
    if a[i] in a[i+1:]:
        print(i, '1-------', a[i + 1:])
        a[i+1:].remove(a[i])
        print(i, '2-------', a[i + 1:])
print(a)

Python 数组的 slice 是一个拷贝,不会改变原数组。

可以用这个: `unique_a = list(set(a))`

 

如果你一定要用原来代码的方式,修改slice不会修改原始数组,不过你可以修改slice后把slice重新赋值给原始数组

a=[1,2,3]
s = a[1:]
s.remove(3)
a[1:] = s

 

我不太明白你这个代码的意思是什么,因为你的代码在一些地方出了问题不太好理解。是去除掉列表中的重复元素,print一个新的无重复列表吗?如果是这样的话,print(list(set(a)))即可了/

a[i+1:].remove(a[i])

这里是对a列表的a[i+1;]切片进行remove操作,而不是a列表本身。而接下来的print(a[i+1;])仍然是对a切片后的列表,而不是你想要的remove过的a[i+1;]列表

修改后应该是这样。

if a[i] in a[i+1:]:
        print(i, '1-------', a[i + 1:])
        x=a[i+1:]
        x.remove(a[i])
        print(i, '2-------', x)