如何删除列表中所有出现的特定值,但第一次出现的除外?
例如,我有一个列表:
letters = ['a', 'b', 'c', 'c', 'c', 'd', 'c', 'a', 'a', 'c']
我需要一个看起来像这样的函数:
preserve_first(letters, 'c')
并返回此:
['a', 'b', 'c', 'd', 'a', 'a']
除去给定值的第一次出现以外的所有内容,否则保留顺序。如果有办法做到这一点pandas.Series
,那就更好了。
您只想删除重复项'c'
。因此,您想过滤序列完全不重复或不等于的位置'c'
。我喜欢用它pd.Series.ne
来代替,pd.Series !=
因为包装括号的减少增加了可读性(我认为)。
s = pd.Series(letters)
s[s.ne('c') | ~s.duplicated()]
0 a
1 b
2 c
5 d
7 a
8 a
dtype: object
完全按照要求进行。
def preserve_first(letters, letter):
s = pd.Series(letters)
return s[s.ne(letter) | ~s.duplicated()].tolist()
preserve_first(letters, 'c')
['a', 'b', 'c', 'd', 'a', 'a']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句