Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看項目源碼
本篇閱讀的代碼實現了將列表分割成指定大小的小列表的功能。最后一個小列表的長度由實際剩余的項而定。
本篇閱讀的代碼片段來自於30-seconds-of-python。
chunk
from math import ceil
def chunk(lst, size):
return list(
map(lambda x: lst[x * size:x * size + size],
list(range(0, ceil(len(lst) / size)))))
# EXAMPLES
chunk([1, 2, 3, 4, 5], 2) # [[1,2],[3,4],[5]]
chunk
函數接收一個列表和一個規模參數,返回分割后的小列表。函數使用list()
和range()
來創建一個序號列表,指明分割后的列表序號。在序號列表上使用map()
並用輸入列表的切片來填充它。最后,返回新創建的列表。
math.ceil(x)
函數返回x
的上限,即大於或者等於x
的最小整數。輸入列表的長度無法被分割規模整除的時候,最后剩余的項仍然會合並成一個列表,所以,這里需要使用math.ceil(x)
獲取大於或者等於 (len(lst) / size)
的最小整數。
函數通過list()
和range()
生成長度為小列表個數的序號列表(從0
開始),輸入列表lst
的切片lst[x * size:x * size + size]
就是第x
個小列表的內容。