Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看專案原始碼
本篇閱讀的代碼實作了實作了兩個串列求并集的功能,同時支持使用一個過濾條件函式,串列中所有元素根據該條件求取并集,并集中是兩個串列的原始元素,
本篇閱讀的代碼片段來自于30-seconds-of-python,
union_by
def union_by(a, b, fn):
_a = set(map(fn, a))
return list(set(a + [item for item in b if fn(item) not in _a]))
# EXAMPLES
from math import floor
union_by([2.1], [1.2, 2.3], floor) # [2.1, 1.2]
union_by函式接收兩個串列和一個過濾條件函式,將提供的函式應用于兩個串列中的每個元素后,回傳一個新的串列,包含所有存在于兩個串列的不重復的元素,
map函式之前已經講解過,它會回傳一個迭代器,該迭代器會將變換函式fn應用于所有的串列元素上,
set是Python的一個特殊的資料型別,是由不重復元素組成的無序的集,本函式直接使用set型別消除了串列中的重復元素,
特別的,當過濾條件函式是lamda x:x時,函式轉化為直接求取兩個串列的并集,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311935.html
標籤:其他
