日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python技巧(2)--碾平列表和列表去重

發布時間:2023/12/10 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python技巧(2)--碾平列表和列表去重 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總第 116 篇文章,本文大約? 1000 字,閱讀大約需要 3 分鐘

今天介紹和列表相關的兩個小技巧:

  • 碾平列表(flatten list),也就是列表里的元素也帶有列表的情況;

  • 列表去重,保留原始順序和不保留順序的做法


1. 碾平列表

碾平列表(flatten list ),即當列表里面嵌套列表,如何將這些子列表給取出來,得到一個不包含子列表的列表,示例如下:

list1 = [1, [2, [3,4]], 5]=>new_list = [1, 2, 3, 4, 5]

這里介紹 3 種方法,分別如下。

方法1:利用遞歸的思想,代碼如下:

list1 = [1, [2, [3,4]], 5] res = []def fun(s):for i in s:if isinstance(i, list):fun(i)else:res.append(i)fun(list1) print(res)

接著是兩種比較高級的寫法,用 lambda 實現一個匿名函數

方法2:

flat = lambda L: sum(map(flat, L), []) if isinstance(L, list) else [L]print(flat(list1))

方法3:

a = [1, 2, [3, 4], [[5, 6], [7, 8]]]flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]print(flatten(a))

2. 列表去重

列表去重可能會破壞原有的順序,所以下面分別介紹保留順序和不保留順序的做法。

去重,但改變順序

去重但改變順序,兩種方法

方法1 就是利用 set 進行去重

l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2

方法2 是利用字典的鍵不重復的特性,將列表的元素作為一個字典的鍵,然后返回這個字典的所有鍵,即可實現去重的操作。

l1 = ['b','c','d','b','c','a','a'] l2 = {}.fromkeys(l1).keys() print l2

去重,不改變順序

利用 sorted 和 set 方法實現去重并保留原始順序,這里 sorted 指定排序的規則就是按照原列表的索引順序

l1 = ['b','c','d','b','c','a','a'] l2 = sorted(set(l1),key=l1.index) print l2

歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

如果覺得不錯,在看、轉發就是對小編的一個支持!

總結

以上是生活随笔為你收集整理的python技巧(2)--碾平列表和列表去重的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。