將 Python 列表一分為二

Hemank Mehtani 2023年1月30日
  1. 在 Python 中使用列表切片將列表分成兩半
  2. Python 中使用 islice() 函式將列表拆分為一半
  3. 在 Python 中使用 accumulate() 函式將列表分成兩半
將 Python 列表一分為二

列表在特定索引處儲存元素並且是可變的,這意味著我們可以稍後更新列表中的值。

我們將在本教程中學習如何將列表分成兩半。

在 Python 中使用列表切片將列表分成兩半

列表切片抓取列表的特定部分進行某些操作,而原始列表不受影響。這意味著它會建立列表的副本來執行分配的任務。Python 中的切片運算子 ([:] ) 用於此目的。

我們在以下程式碼中將列表分成兩半。

lst = ["a", "b", "c", "d", "e", "f"]
print(lst[:3])
print(lst[3:])

輸出:

['a', 'b', 'c']
['d', 'e', 'f']

我們還可以建立一個函式將列表分成兩半。我們將使用 len() 函式來查詢列表的長度。我們將這個值減半並使用列表切片方法將它分成兩半。

例如,

def split_list(a_list):
    half = len(a_list) // 2
    return a_list[:half], a_list[half:]


A = ["a", "b", "c", "d", "e", "f"]
B, C = split_list(A)
print(B)
print(C)

輸出:

['a', 'b', 'c']
['d', 'e', 'f']

我們建立了一個函式 split_list,它返回現有列表的兩半。

請注意,它不會更改原始列表,因為它會建立一個重複的列表來執行分配的任務。

Python 中使用 islice() 函式將列表拆分為一半

在 Python 中,itertools 是內建模組,允許我們有效地處理迭代器。

它使迭代列表和字串等可迭代物件變得非常容易。islice 函式是 itertools 模組的一部分。它有選擇地列印作為引數傳遞的可迭代容器中提到的值。

例如,

from itertools import islice

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
lst = iter(Input)
Output = [list(islice(lst, elem)) for elem in length_to_split]

print("Initial list:", Input)
print("After splitting", Output)

輸出:

Initial list: ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]

在 Python 中使用 accumulate() 函式將列表分成兩半

zip() 函式用於組合來自可迭代物件的元素。我們可以將它與 itertools 模組中的 accumulate() 函式一起使用,將列表分成兩半。

例如,

from itertools import accumulate

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
Output = [
    Input[x - y : x] for x, y in zip(accumulate(length_to_split), length_to_split)
]
print("Initial list :", Input)
print("After splitting", Output)

輸出:

Initial list : ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]