Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看專案原始碼
本篇閱讀的代碼實作了多個串列按照元素的位置依序合并成一個新的嵌套串列,每個子串列都是原串列對應位置的元素,zip()和itertools.zip_longest()提供了類似于這段代碼的功能,
本篇閱讀的代碼片段來自于30-seconds-of-python,
merge
def merge(*args, fill_value=https://www.cnblogs.com/felixz/p/None):
max_length = max([len(lst) for lst in args])
result = []
for i in range(max_length):
result.append([
args[k][i] if i < len(args[k]) else fill_value for k in range(len(args))
])
return result
# EXAMPLES
merge(['a', 'b'], [1, 2], [True, False]) # [['a', 1, True], ['b', 2, False]]
merge(['a'], [1, 2], [True, False]) # [['a', 1, True], [None, 2, False]]
merge(['a'], [1, 2], [True, False], fill_value = 'https://www.cnblogs.com/felixz/p/_') # [['a', 1, True], ['_', 2, False]]
merge函式接收多個串列和一個填充值fill_value,回傳一個嵌套串列,該嵌套串列的元素個數等于最長的輸入串列的長度,每個子串列的元素依次來自于輸入串列的相同位置,輸入串列的元素不足的情況下,使用填充值代替,也就是說merge_list[0]是一個串列,其中的元素依次為輸入串列索引為0的元素,
函式使用max結合list comprehension得到引數中最長的串列的長度,結合使用range()和max_length變數來回圈,如果一個串列的長度短于max_length,則剩余的專案使用fill_value(默認為None)來進行填充,
函式呼叫同時使用了“關鍵字引數”和“可變引數”的方式,在第9篇的時候介紹了單獨使用“可變引數”呼叫的方式,一般來說,這些“可變引數”將在形式引數串列的末尾,因為它們收集傳遞給函式的所有剩余輸入引數,出現在*args引數之后的任何形式引數都是“僅限關鍵字引數”,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/321543.html
標籤:Python
上一篇:Java 創建PDF列印小冊子
