1. 程式人生 > 其它 >Python程式碼閱讀(第31篇):將一個列表分割成指定大小的小列表

Python程式碼閱讀(第31篇):將一個列表分割成指定大小的小列表

本篇閱讀的程式碼實現了將列表分割成指定大小的小列表的功能。最後一個小列表的長度由實際剩餘的項而定。 本篇閱讀的程式碼片段來自於30-seconds-of-python。

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個小列表的內容。