从python列表中提取序列

从python列表中提取序列,python,list,sequence,sequences,Python,List,Sequence,Sequences,我有一个python列表,如下所示: ['x','x','x','x','P','x','x','N','P','N','x','x','x','N','P','x','x,'x,','x','x','x','N','x,'x','P','N','x','x','x'....] 我需要以某种方式处理列表,以便返回p和N的单独序列。在上述情况下,我需要返回: [['P'],['N','P','N'],['N','P'],['N'],['P','N'].....] 我查看了itertools,但

我有一个python列表,如下所示:

['x','x','x','x','P','x','x','N','P','N','x','x','x','N','P','x','x,'x,','x','x','x','N','x,'x','P','N','x','x','x'....]
我需要以某种方式处理列表,以便返回
p
N
的单独序列。在上述情况下,我需要返回:

[['P'],['N','P','N'],['N','P'],['N'],['P','N'].....]
我查看了
itertools
,但没有找到任何可以做到这一点的工具。我有很多列表需要以这种方式处理,因此效率也很重要。

您可以使用以下方法来处理:


我们根据{N',p'}中的
项进行分组,并且只保留这是真的组

您是否尝试自己提出此算法?什么是“大量列表”(例如,超过10³或超过10立方米)⁹)?它们有多大(例如大于10³或大于10⁹ 元素/字节)?您的性能要求是什么?一个简单的实现可以用不到10行代码完成,但是如果没有这些问题的答案,推荐解决方案是很困难的。有大约100000个平均长度为500的列表。我认为Thierry Latuille的答案会起到作用!谢谢这正是我想要的!谢谢!
    main_list = []
    def get_desired_value(_list):
        new_list = []
        for val in _list:
            if val in ['N', 'P']:
                new_list.append(val)
            else:
                if new_list:
                    main_list.append(new_list[:])
                    new_list.clear()
        return main_list
   print(get_desired_value(data))
   >>>[['P'], ['N', 'P', 'N'], ['N', 'P'], ['N'], ['P', 'N']]
    main_list = []
    def get_desired_value(_list):
        new_list = []
        for val in _list:
            if val in ['N', 'P']:
                new_list.append(val)
            else:
                if new_list:
                    main_list.append(new_list[:])
                    new_list.clear()
        return main_list
   print(get_desired_value(data))
   >>>[['P'], ['N', 'P', 'N'], ['N', 'P'], ['N'], ['P', 'N']]