该帖子与此类似,但我想要的是删除列表中特定的连续重复项。所以假设我们有这个列表:[1,1,1,2,2,3,2,4,4,4,1]我希望有:[1,2,2,3,2,4,4,4,1]我只想删除“那些”。我正在尝试itertools.groupby,但我还没有找到方法。
2 回答

四季花海
TA贡献1811条经验 获得超5个赞
您可以使用itertools.groupby
和使用分组密钥来保留密钥或保留返回的组:
l = [1,1,1,2,2,3,2,4,4,4,1]
from itertools import chain, groupby
list(chain.from_iterable([k] if k==1 else v for k,v in groupby(l)))
# [1, 2, 2, 3, 2, 4, 4, 4, 1]

MMMHUHU
TA贡献1834条经验 获得超8个赞
如果您在列表的开头搜索那些,则不需要导入模块来执行此操作,也可以在 for 循环中迭代元素:
your_list = [1,1,1,2,2,3,2,4,4,4,1]
for index, element in enumerate(your_list):
if element != 1:
break
if index:
result = your_list[index-1:]
else:
result = your_list
这将检查一个,直到找到另一个数字。另一个数字 -1 的索引是列表的开头。
如果列表中没有 1,index则为零并返回原始列表。
添加回答
举报
0/150
提交
取消