Python 使用给定项拆分列表
我想提取特殊元素“-break-”之间的元素组。然后将这些组存储到新列表中 这是输入列表:Python 使用给定项拆分列表,python,list,Python,List,我想提取特殊元素“-break-”之间的元素组。然后将这些组存储到新列表中 这是输入列表: main_list = [ '-break-', 'one', 'two', '-break-', 'three', '-break-', 'four', 'five', 'six' '-break-', '
main_list = [ '-break-',
'one',
'two',
'-break-',
'three',
'-break-',
'four',
'five',
'six'
'-break-',
'seven',
'eight',
'nine',
'ten'
]
输出列表应为:
new_list = [ ['one', 'two'],
['three'],
['four', 'five', 'six'],
['seven', 'eight', 'nine', 'ten'],
]
这里有一种方法使用:
itertools.groupby
将相等的连续值组合在一起。但是,当提供键
时,同样的逻辑适用,但使用键
功能的结果。在这种情况下,键
功能将生成以下值:
[x != '-break-' for x in main_list]
# [False, True, True, False, True, False, True, True, True, True, True, True, True]
因此,在每次迭代中,我们都会收到一个由分组键组成的
元组(True
或False
)和一个具有相应值的列表。因此,为了只保留那些分组键为True的情况,我们只需要在k
作为条件时添加。一行。它可能可以简化:
new_list=[[y表示x中的y.split(','),如果y]表示x中的x.join(main_list.split('-break-'),如果x]
以下是列表理解的更清晰视图:
[
[
Y
#将所有元素拆分为“,”
对于x.split(',')中的y
#过滤掉空值
如果y
]
#用“,”连接所有内容,然后用“-break-”分割
对于“,”中的x。连接(主列表)
.split(“-break-”)
#过滤掉空值
如果x
]
[x != '-break-' for x in main_list]
# [False, True, True, False, True, False, True, True, True, True, True, True, True]