关于python:修剪列表中的尾随重复项

Trimming trailing duplicates from a list

考虑以下列表:

1
data = ['A', 'B', 'CAT', 'C', 'CAT', 'CAT', 'CAT']

清单末尾的CATs必须从3减少到1。列表中有一个不应删除的CAT(在B之后)。这样做的好方法是什么?尾随的CAT的数目未知,列表中可能有也可能没有一些CAT的。因此,所需的输出是:

1
data = ['A', 'B', 'CAT', 'C', 'CAT']

我想到的一个方法是:

1
2
3
4
5
6
7
8
9
10
count = 0

for i in reversed(data):
    if i == 'CAT':
        count += 1
    else:
        break

if count > 1:
    del data[-count:]

完成一个稍微小一些的任务需要很长时间。


怎么样:

1
2
while len(data) > 1 and data[-1] == data[-2]:
  data.pop()

这将修剪任何类型的尾随副本。如果您特别希望只修剪'CAT',那么很容易对代码进行调整。