删除python列表中只有一半特定的相邻重复项

我有一个输出一些数据的工具.众所周知,每当’10’进入数据时,它就会加上额外的’10’,即新数据变为……’10’,’10’,.有时连续系列中可能有4’10’,这意味着实际上有2’10’.

在阅读数据时,我试图删除重复项.到目前为止,我已经学会了如果只找到两个相邻的重复项如何删除重复项,但同时如果找到偶数个重复项,我想返回一半重复项.

x = [ '10', '10', '00', 'DF', '20' ,'10' ,'10' ,'10' ,'10', ....]

预期产出

[ '10', '00' , 'DF', ' 20', ' 10', '10' ..]

解决方法:

您可以尝试使用itertools中的groupby():

X= [ '10', '10', '00', 'DF', '20' ,'10' ,'10' ,'10' ,'10']

from itertools import groupby

result = []
for k, g in groupby(X) :
    group = list(g)
    if k == '10' :
        result.extend(group[:(len(group)+1)/2])
    else :
        result.extend(group)
print result

得到:

['10', '00', 'DF', '20', '10', '10']
上一篇:php – MySQL – 选择性删除重复记录


下一篇:从os x中删除多个python安装