程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python從列表中刪除相鄰和不相鄰的相同元素

編輯:Python

相鄰元素是不相鄰元素中的一種特殊的存在,所以我們先來探討不相鄰的相同元素的刪除。

不相鄰元素的刪除

結果:list=[1,2,3,4]
#第一種
list = [1,2,3,3,4,1,1]
new_list = []
for i in list[:]:
if i not in new_list: #可以刪除重復元素,不管是否相鄰
new_list.append(i)
print(new_list)
# 第二種 集合可以去重 先轉換成集合再轉換成列表
list = [1,2,3,3,4,1,1]
print(list(set(list)))
# 第三種
list = [1,2,3,3,4,1,1]
list.sort()
new_list = []
for i in range(len(list) - 1):
if list[i] == list[i + 1]:
new_list.append(list[i + 1])
for j in new_list:
list.remove(j)
print(list)
# 第四種
# fromkeys 是把所有的鍵都賦同樣的值(如果不指定內容則默認賦值為None)
list = [1,2,3,3,4,1,1]
new_list = []
dct = dict.fromkeys(list)
# print(dct)
for n in dct:
new_list.append(n)
print(new_list)
# 第五種 第四種方法的簡寫
list1 = [1,2,3,3,4,1,1]
print(list(dict.fromkeys(list1)))

相鄰元素的刪除

#結果:list1 = [1, 2, 3, 4, 1]
#第一種,比較相鄰兩個值,若相同,則del其中一個,逐個遍歷,直到沒有重復的。
list1 = [1,2,2,3,3,4,1,1]
for i in range(len(list1) - 1, 0, -1):
if list1[i] == list1[i-1]:
del list1[i]
print(list1)
#第二種,使用itertools庫
import itertools
list1 = [1,2,2,3,3,4,1,1]
new_list1 = [k for k, g in itertools.groupby(list1)]
print(new_list1)
#第三種 生成器(generator)
#其中del_adjacent()是一個生成器類型,需要使用list轉換成列表
list1 = [1,2,2,3,3,4,1,1]
def del_adjacent(iterable):
prev = object()
for iterm in iterable:
if iterm != prev:
prev = iterm
yield iterm
a = list(del_adjacent(list1))
print(a)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved