將 Python 列表一分為二
Hemank Mehtani
2023年1月30日
![將 Python 列表一分為二](/img/Python/feature-image---split-list-in-half-in-python.webp)
列表在特定索引處儲存元素並且是可變的,這意味著我們可以稍後更新列表中的值。
我們將在本教程中學習如何將列表分成兩半。
在 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']]