該帖子與此類似,但我想要的是刪除列表中特定的連續重復項。所以假設我們有這個列表:[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
提交
取消