如何在 Python 中將列表分割成大小相等的塊?
列表是 Python 中最常用的資料結構之一。列表是 Python 中一種可變的資料結構,它包含有序的元素序列。以下是一個整數列表的示例:
示例
lis= [5, 10, 15, 20, 25] print(lis)
輸出
如果執行以上程式碼片段,則會產生以下輸出。
[5, 10, 15, 20, 25]
讓我們討論一下在 Python 中將列表分割成大小相等的塊的各種方法。
使用切片運算子
您可以列印具有相同大小塊的元素列表,並且可以使用切片運算子輕鬆解決。
示例
在下面的示例中,我們將 10 個數字分成了 5 個大小相等的列表。
lis=[1,2,3,4,5,6,7,8,9,10] x=0 y=10 for i in range(x,y,2): x=i print (lis[x:x+2])
輸出
執行上述程式後,將獲得以下輸出。
[1, 2] [3, 4] [5, 6] [7, 8] [9, 10]
使用 yield 關鍵字
Yield 是 Python 中的一個關鍵字,用於從函式中返回,但它不會忘記其區域性狀態。
簡單來說,當我們希望從函式中返回多個結果(部分解)而無需退出函式且不會丟失其區域性狀態時,可以使用 yield 關鍵字。
示例 1
以下是一個示例程式,用於演示使用 **yield** 關鍵字將 Python 中的列表分割成大小相等的塊。
lis = [10,20,30,40,50,60,70,80,90,100] def chunks(l, n): for i in range(0, len(l), n): yield l[i:i + n] n = 2 t = list(chunks(lis, n)) print (t)
輸出
執行上述程式後,將生成以下輸出。
[[10, 20], [30, 40], [50, 60], [70, 80], [90, 100]]
示例 2
我們在下面的示例中定義了一個函式來分割列表。
- 使用 for 迴圈和 range() 方法從 0 迭代到列表的長度,使用塊的大小作為步長。
- 列表“l[i:i+size_of_chunk]”返回每個塊;yield 返回這些塊。
def split(l, size_of_chunk): for i in range(0, len(l), size_of_chunk): yield l[i:i + size_of_chunk] size_of_chunk = 4 the_list = [23,56,83,19,38,64,92,56] print('The evenly sized chunk list is:',list(split(the_list, size_of_chunk)))
輸出
執行上述程式碼後,我們得到以下輸出:
The evenly sized chunk list is: [[23, 56, 83, 19], [38, 64, 92, 56]]
使用列表推導式
列表推導式提供更短的語法,並允許從其他可迭代物件(如元組、列表、字串、陣列等)建立新的列表。
示例
以下是一個示例程式,使用列表推導式將 Python 中的列表分割成大小相等的塊。
lis = [1, 2, 3, 4, 5, 6, 7, 8, 9] n = 3 x = [lis[i:i + n] for i in range(0, len(lis), n)] print(x)
輸出
執行上述程式後,將生成以下輸出。
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
使用 numpy 模組
Numpy 是 Python 中用於處理陣列的通用包。它提供了一個多維陣列物件,具有出色的速度以及用於與這些陣列互動的工具。
示例
Numpy 的 array_split() 方法將列表分成大小相等的塊。這裡有 6 個單獨的塊。
import numpy as num list = [23,56,83,19,38,64,92,56] print('The evenly sized chunk list is:',num.array_split(list, 6))
輸出
以下是上述程式碼的輸出:
The evenly sized chunk list is: [array([23, 56]), array([83, 19]), array([38]), array([64]), array([92]), array([56])]
廣告