Python 中的自定義列表分割


資料分析帶來複雜的情況,此時需要整理資料並進行移動。在此,讓我們看看如何獲取一個大列表,並根據需求將其拆分為許多子列表。本文將探討實現此操作的方法。

使用 zip 和 for 迴圈

在此方法中,我們使用列表切片獲取從拆分點開始的元素。然後,我們使用 zip 和 for 迴圈透過 for 迴圈建立子列表。

示例

 線上示例

Alist = ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4]

# The indexes to split at
split_points = [2, 5, 8]

# Given list
print("Given list : " + str(Alist))

# SPlit at
print("The points of splitting : ",split_points)

#Perform the split
split_list = [Alist[i: j] for i, j in zip([0] +
split_points, split_points + [None])]

# printing result
print("The split lists are : ", split_list)

輸出

執行以上程式碼,我們將得到以下結果 −

Given list : ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4]
The points of splitting : [2, 5, 8]
The split lists are : [['Mon', 'Tue'], ['Wed', 6, 7], ['Thu', 'Fri', 11], [21, 4]]

使用 chain 和 zip

chain 函式生成一個迭代器,從第一個可迭代物件返回元素,直至該元素用盡。因此,它將標記拆分的位置。然後,我們使用 zip 函式將拆分結果打包成子列表。

示例

 線上示例

from itertools import chain
Alist = ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4]

# The indexes to split at
split_points = [2, 5, 8]

# Given list
print("Given list : ", str(Alist))

# Split at
print("The points of splitting : ",split_points)

# to perform custom list split
sublists = zip(chain([0], split_points), chain(split_points, [None]))
split_list = list(Alist[i : j] for i, j in sublists)

# printing result
print("The split lists are : ", split_list)

輸出

執行以上程式碼,我們將得到以下結果 −

Given list : ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4]
The points of splitting : [2, 5, 8]
The split lists are : [['Mon', 'Tue'], ['Wed', 6, 7], ['Thu', 'Fri', 11], [21, 4]]

更新日期:2020 年 5 月 4 日

434 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告