Python|在空字符串上拆分列表
有时,我们可能会遇到需要在作为分隔符发送的空白字符上将列表拆分为列表列表的问题。此类问题可用于发送消息,也可用于希望拥有本机列表列表的情况。让我们讨论一些可以做到这一点的方法。
方法 #1:使用index()
和列表切片
列表切片可用于从本地列表中获取子列表,索引函数可用于检查可能充当分隔符的空字符串。这样做的缺点是它只适用于单个拆分,即只能将一个列表分成 2 个子列表。
# Python3 code to demonstrate
# divide list to siblist on deliminator
# using index() + list slicing
# initializing list
test_list = ['Geeks', 'for', '', 'Geeks', 1, 2]
# printing original list
print("The original list : " + str(test_list))
# using index() + list slicing
# divide list to siblist on deliminator
temp_idx = test_list.index('')
res = [test_list[: temp_idx], test_list[temp_idx + 1: ]]
# print result
print("The list of sublist after separation : " + str(res))
输出 :
The original list : [‘Geeks’, ‘for’, ”, ‘Geeks’, 1, 2]
The list of sublist after separation : [[‘Geeks’, ‘for’], [‘Geeks’, 1, 2]]
方法 #2:使用itertools.groupby() + list comprehension
上面提出的方法的问题可以使用 groupby函数来解决,该函数可以划分空字符串给出的所有列表中断。
# Python3 code to demonstrate
# divide list to siblist on deliminator
# using itertools.groupby() + list comprehension
from itertools import groupby
# initializing list
test_list = ['Geeks', '', 'for', '', 4, 5, '',
'Geeks', 'CS', '', 'Portal']
# printing original list
print("The original list : " + str(test_list))
# using itertools.groupby() + list comprehension
# divide list to siblist on deliminator
res = [list(sub) for ele, sub in groupby(test_list, key = bool) if ele]
# print result
print("The list of sublist after separation : " + str(res))
输出 :
The original list : [‘Geeks’, ”, ‘for’, ”, 4, 5, ”, ‘Geeks’, ‘CS’, ”, ‘Portal’]
The list of sublist after separation : [[‘Geeks’], [‘for’], [4, 5], [‘Geeks’, ‘CS’], [‘Portal’]]