Python如何從列表中刪除相鄰和不相鄰的相同元素
Python從列表中刪除相鄰和不相鄰相同元素
相鄰元素是不相鄰元素中的一種特殊的存在,所以我們先來(lái)探討不相鄰的相同元素的刪除。
不相鄰元素的刪除
結(jié)果: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: #可以刪除重復(fù)元素,不管是否相鄰
new_list.append(i)
print(new_list)
# 第二種 集合可以去重 先轉(zhuǎn)換成集合再轉(zhuǎn)換成列表
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 是把所有的鍵都賦同樣的值(如果不指定內(nèi)容則默認(rèn)賦值為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)
# 第五種 第四種方法的簡(jiǎn)寫
list1 = [1,2,3,3,4,1,1]
print(list(dict.fromkeys(list1)))相鄰元素的刪除
#結(jié)果:list1 = [1, 2, 3, 4, 1]
#第一種,比較相鄰兩個(gè)值,若相同,則del其中一個(gè),逐個(gè)遍歷,直到?jīng)]有重復(fù)的。
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庫(kù)
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()是一個(gè)生成器類型,需要使用list轉(zhuǎn)換成列表
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)python比較列表相鄰元素(找相同或去重)
python列表去除相鄰重復(fù)相等數(shù)據(jù)(只保留一個(gè))
In [1]: import itertools In [2]: a=[0, 1, 3, 2, 4, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 22, 23, 23, 23, 26, 29, 29, 30, 32, 33, 34, 32, 32, 15, 24] In [3]: b=[k for k, _ in itertools.groupby(a)] In [4]: print(b) [0, 1, 3, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 30, 32, 33, 34, 32, 15, 24]
python列表找到相鄰元素相同的元素值
(理解了 m=a[1:] n=a[:-1] 得到的就是要比較的前后數(shù)據(jù)之后,你就可以輕松地做玩轉(zhuǎn)相鄰元素啦)
In [22]: import numpy as np In [23]: a=[0, 1, 3, 2, 4, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 22, 23, 23, 23, 26, 29, 29, 30, 32, 33, 34, 32, 32, 15, 24] In [24]: m=a[1:] In [25]: n=a[:-1] In [26]: len(a) Out[26]: 41 In [27]: len(m) Out[27]: 40 In [28]: len(n) Out[28]: 40 In [29]: c=[i[0]==i[1] for i in zip(m, n)] In [30]: print(c) [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, True, False, False, True, False, False, True, True, False, True, True, False, False, True, False, False, False, False, False, True, False, False] In [31]: d=np.array(a[:-1])[c] In [32]: print(d) [ 4 16 18 20 22 22 23 23 29 32] In [33]: result = list(set(d)) In [34]: result Out[34]: [32, 4, 16, 18, 20, 22, 23, 29]
也可以用以下的方法比較出相鄰元素是否相等,即求出上面的變量 c,然后再執(zhí)行后面的步驟
In [35]: import operator In [36]: import itertools In [37]: c2=list(map(operator.eq, a, itertools.islice(a, 1, None))) In [38]: print(c2) [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, True, False, False, True, False, False, True, True, False, True, True, False, False, True, False, False, False, False, False, True, False, False] In [39]: c==c2 Out[39]: True
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于python中time和datetime的區(qū)別與用法
這篇文章主要介紹了關(guān)于python中time和datetime的區(qū)別與用法,Python中封裝了很多實(shí)用的函數(shù),那么關(guān)于時(shí)間的函數(shù)time和datetime有什么區(qū)別和作用,讓我們來(lái)看看吧2023-03-03
利用Python語(yǔ)言的grpc實(shí)現(xiàn)消息傳送詳解
gRPC是一個(gè)高性能、通用的開(kāi)源RPC框架,其由Google主要面向移動(dòng)應(yīng)用開(kāi)發(fā)并基于HTTP/2協(xié)議標(biāo)準(zhǔn)而設(shè)計(jì)。本文主要介紹了如何利用Python語(yǔ)言的grpc實(shí)現(xiàn)消息傳送,感興趣的可以了解一下2023-03-03
Tensorflow實(shí)現(xiàn)酸奶銷量預(yù)測(cè)分析
這篇文章主要為大家詳細(xì)介紹了Tensorflow酸奶銷量預(yù)測(cè)分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
PyTorch實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)的基本算法FedAvg
這篇文章主要為大家介紹了PyTorch實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)的基本算法FedAvg,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
JSON Web Tokens的實(shí)現(xiàn)原理
本文主要介紹了JSON Web Tokens的實(shí)現(xiàn)原理。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-04-04
Python工廠模式實(shí)現(xiàn)封裝Webhook群聊機(jī)器人詳解
企業(yè)存在給 特定群組 自動(dòng)推送消息的需求,你可以在群聊中添加一個(gè)自定義機(jī)器人,通過(guò)服務(wù)端調(diào)用 webhook 地址,即可將外部系統(tǒng)的通知消息即時(shí)推送到群聊中。本文就來(lái)和大家聊聊具體實(shí)現(xiàn)方法2023-02-02
Python編寫車票訂購(gòu)系統(tǒng)?Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python編寫車票訂購(gòu)系統(tǒng),Python實(shí)現(xiàn)快遞收費(fèi)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

