从python列表中提取序列
我有一个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,但
['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']]