Python 使用给定项拆分列表

Python 使用给定项拆分列表,python,list,Python,List,我想提取特殊元素“-break-”之间的元素组。然后将这些组存储到新列表中 这是输入列表: main_list = [ '-break-', 'one', 'two', '-break-', 'three', '-break-', 'four', 'five', 'six' '-break-', '

我想提取特殊元素“-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]