python從列表中刪除相鄰重復元素


這里以一個栗子來用三種方法實現,輸入a=['1','1','2','2','1','1'],輸出b=['1', '2', '1']

方法一:

1 list1 = ['1','1','2','2','1','1']
2 
3 def del_adjacent(alist):
4     for i in range(len(alist) - 1, 0, -1):
5         if alist[i] == alist[i-1]:
6             del alist[i]
7 
8 del_adjacent(list1)
9 print(list1)    # ['1', '2', '1']
該方法思路就是比較相鄰兩個值,若相同,則del其中一個,逐個遍歷,直到沒有重復的。

方法二:使用itertools庫

1 import itertools
2 
3 list1 = ['1','1','2','2','1','1']
4 new_list1 = [k for k, g in itertools.groupby(list1)]
5 print(new_list1)    # ['1', '2', '1']
這個方法是使用python自帶的功能編程模塊-itertools,它是一個迭代器函數庫,內部有很多很實用且高效的函數,比如此例的groupby()。詳細使用可參考python官網:itertools.groupby

方法三:生成器(generator)

 1 list1 = ['1','1','2','2','1','1']
 2 
 3 def del_adjacent(iterable):
 4     prev = object()
 5     for iterm in iterable:
 6         if iterm != prev:
 7             prev = iterm
 8             yield iterm
 9 
10 a = list(del_adjacent(list1))    # 這里del_adjacent()是一個生成器類型,需要使用list轉換成列表
11 print(a)    # ['1', '2', '1']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM