Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看項目源碼
本篇閱讀的代碼實現了將非列表形式的輸入轉換成列表形式。
本篇閱讀的代碼片段來自於30-seconds-of-python。
cast_list
def cast_list(val):
return list(val) if isinstance(val, (tuple, list, set, dict)) else [val]
# EXAMPLES
cast_list('foo') # ['foo']
cast_list([1]) # [1]
cast_list(('foo', 'bar')) # ['foo', 'bar']
cast_list
函數輸入一個參數,輸出該參數轉換成列表的形式。
函數使用isinstance()
檢查給定的值是否是可枚舉的,並通過使用list()
將參數的形式進行轉換,或直接封裝在一個列表中返回。
原始代碼片中沒有set
和dict
類型的樣例,接下來我們測試一下這兩種輸入的輸出。
>>> cast_list({'one', 'two', 'three'})
['three', 'one', 'two']
>>> cast_list({"one": 1, "two": 2, "three": 3})
['one', 'two', 'three']
集合類型的輸出元素的順序不一致,這是因為集合是無序。字典類型中,最后list
中只有key
,沒有value
。