將 Python 列表一分為二
Hemank Mehtani
2023年1月30日
2021年10月2日
列表在特定索引處儲存元素並且是可變的,這意味著我們可以稍後更新列表中的值。
我們將在本教程中學習如何將列表分成兩半。
在 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']]