最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python之如何進(jìn)行去重問題

 更新時(shí)間:2023年06月17日 15:32:25   作者:晚風(fēng)吹兒  
這篇文章主要介紹了python之如何進(jìn)行去重問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python如何進(jìn)行去重

自定義函數(shù)去重

解析思路:

  • 1、確定去重目標(biāo)
  • 2、給一個(gè)空列表去接收去重后的元素
  • 3、遍歷需要去重的序列,將重復(fù)數(shù)據(jù)過濾
  • 4、打印去重后的數(shù)據(jù)
l = [1,1,3,2,2,3,4,2,5]
new = []
for i in l:
? ? if i not in new:
? ? ? ? new.append(i)
print(new)

輸出結(jié)果:

[1, 3, 2, 4, 5]

內(nèi)置函數(shù)去重

l = [1,1,3,2,2,3,4,2,5]
b = list(set(l))
print(b)

輸出結(jié)果:

[1, 2, 3, 4, 5]

可以看出去重后改變了序列的順序,所以去重后需要按元素索引進(jìn)行排序,才會(huì)保持序列的原有順序

代碼如下:

l = [1,1,3,2,2,3,4,2,5]
a = list(set(l))
a.sort(key=l.index)
print(a)

輸出結(jié)果:

[1, 3, 2, 4, 5]

python列表常見的5種去重方式

列表去重在python實(shí)際運(yùn)用中,十分常見,也是最基礎(chǔ)的重點(diǎn)知識(shí)。

以下總結(jié)了5種常見的列表去重方法

一、使用for循環(huán)實(shí)現(xiàn)列表去重

  • 此方法去重后,原順序保持不變。
# for循環(huán)實(shí)現(xiàn)列表去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = []
for l1 in list1:
? ? if l1 not in list2:
? ? ? ? list2.append(l1)
print(list2)

結(jié)果:[‘a’, ‘b’, 1, 3, 9]

二、使用列表推導(dǎo)式去重

  • 此方法去重后,原順序保持不變。
# 使用列表推導(dǎo)式去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
res = []
[res.append(i) for i in list1 if i not in res]
print(res)

結(jié)果:[‘a’, ‘b’, 1, 3, 9]

三、使用集合轉(zhuǎn)換函數(shù)set()實(shí)現(xiàn)列表去重

  • 原理:同一個(gè)集合的元素之間是不允許重復(fù)的
# set()列表去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = list(set(list1))
print(list2)

結(jié)果:[1, 3, 9, ‘b’, ‘a’]

問題:使用set()函數(shù)去重后,會(huì)自動(dòng)排序,則原列表的順序會(huì)發(fā)生改變

解決辦法有2種:

  • 第一種方法,使用sort()方法
# # 第一種方法,sort()
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = list(set(list1))
list2.sort(key=list1.index)
print(list2)

結(jié)果:[‘a’, ‘b’, 1, 3, 9]

注:sort()方法沒有返回值,對(duì)列表元素進(jìn)行原地排序

  • 第二種方法,使用sorted()函數(shù)
# 第二種方法,sored()
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = sorted(list(set(list1)), key=list1.index)
print(list2)

結(jié)果:[‘a’, ‘b’, 1, 3, 9]

注:python內(nèi)置函數(shù)sorted()函數(shù)返回新的列表,并不對(duì)原列表做任何修改

四、使用新建字典方式實(shí)現(xiàn)列表去重

  • 原理:字典的"鍵"是不允許重復(fù)的
  • 此方法去重后,原來順序保持不變。
# 使用新建字典實(shí)現(xiàn)列表去重
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
dic = {}
dic = dic.fromkeys(list1).keys()
print(list(dic))

結(jié)果:[‘a’, ‘b’, 1, 3, 9]

五、刪除列表中存在重復(fù)的數(shù)據(jù)

  • 上面的4種去重方法,都是保留一個(gè),刪除其他
  • 下面這種方法則是,只要存在重復(fù),一個(gè)都不保留
# 刪除存在重復(fù)的值,不保留
list1 = ['a', 'b', 1, 3, 9, 9, 'a']
list2 = [i for i in list1 if list1.count(i) == 1]
print(list2)

結(jié)果:[‘b’, 1, 3]

好了,這就是關(guān)于列表去重的5種方法,可以根據(jù)需求選擇對(duì)應(yīng)的方法。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

兴安盟| 鄂托克前旗| 容城县| 镇雄县| 奉新县| 台南市| 大姚县| 怀安县| 庆元县| 长子县| 二连浩特市| 乐业县| 克拉玛依市| 裕民县| 胶州市| 乐平市| 庆安县| 应用必备| 图们市| 古蔺县| 安化县| 霞浦县| 抚顺县| 岫岩| 天台县| 大余县| 娱乐| 东光县| 淮北市| 祥云县| 临邑县| 扎赉特旗| 伊吾县| 三门峡市| 肥西县| 武定县| 邳州市| 洛川县| 屯昌县| 台中县| 通化市|