#下面代码问题是:输出的两次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)