use*_*318 3 python list set duplicates
我想删除我的python列表中的某些重复项.我知道有一些方法可以删除所有重复项,但我想只删除连续的重复项,同时保持列表顺序.
例如,我有一个如下列表:
list1 = [a,a,b,b,c,c,f,f,d,d,e,e,f,f,g,g,c,c]
Run Code Online (Sandbox Code Playgroud)
但是,我想删除重复项,并保持顺序,但仍保留2 c和2 f,如下所示:
wantedList = [a,b,c,f,d,e,f,g,c]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有这个:
z = 0
j=0
list2=[]
for i in list1:
if i == "c":
z = z+1
if (z==1):
list2.append(i)
if (z==2):
list2.append(i)
else:
pass
elif i == "f":
j = j+1
if (j==1):
list2.append(i)
if (j==2):
list2.append(i)
else:
pass
else:
if i not in list2:
list2.append(i)
Run Code Online (Sandbox Code Playgroud)
但是,这种方法给了我类似的东西:
wantedList = [a,b,c,c,d,e,f,f,g]
Run Code Online (Sandbox Code Playgroud)
因此,不维持秩序.
任何想法,将不胜感激!谢谢!
不能完全确定,如果c和f是特殊情况,或者如果您只想压缩连续的重复.如果是后者,您可以使用itertools.groupby():
>>> import itertools
>>> list1
['a', 'a', 'b', 'b', 'c', 'c', 'f', 'f', 'd', 'd', 'e', 'e', 'f', 'f', 'g', 'g', 'c', 'c']
>>> [k for k, g in itertools.groupby(list1)]
['a', 'b', 'c', 'f', 'd', 'e', 'f', 'g', 'c']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |