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]]
广告