通过在列表中拆分列表来创建子列表

时间:2016-11-25 03:45:03

标签: python list split sublist

我有一个很长的名单。以下是摘录。

['1',  '15943882',  '63',  '1',  '-9',  '-9',  '-9',  '-27',  '1',  '145',  
 '1',  '233',  '-9',  '50',  '20',  '1',  '0',  '1',  '2',  '2',  '3',  
 '1981',  '0',  '0',  '0',  '0',  '0',  '1',  '10.5',  '6', '13',  '150',  
 '60',  '190',  '90',  '145',  '85',  '0',  '0',  '2.3', '3',  '-9',  '-9',  
 '0',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '6',  '-9',  '-9',  '-9',  
 '2',  '16',  '1981',  '0',  '1',  '1',  '1',  '-9',  '1',  '-9',  '1',  
 '-9',  '1',  '1',  '1',  '1',  '1',  '1',  '1',  '-9',  '-9',  '0',  '-9',  
 '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '0',  '0',  '0',  
 '0',  'name',  '2',  '15964847',  '67',  '1',  '-9',  '-9',  '-9',  '-27',  
 '4',  '160',  '1',  '286',  '-9',  '40',  '40',  '0',  '0',  '1',  '2',  
 '3',  '5',  '1981',  '0',  '1',  '0',  '0',  '0',  '1',  '9.5',  '6', 
 '13',  '108',  '64',  '160',  '90',  '160',  '90',  '1',  '0',  '1.5',  
 '2',  '-9',  '-9',  '3',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '3',  
 '-9',  '-9',  '-9',  '2',  '5',  '1981',  '2',  '1',  '2',  '2',  '-9',  
 '2',  '-9',  '1',  '-9',  '1',  '1',  '1',  '1',  '1',  '1',  '1',  '-9',  
 '-9',  '0',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  '-9',  
 '0',  '0',  '0',  '0',  'name']

如何创建2个以值'name'分割的列表?值'name'的索引在整个列表中并不总是相同的。

3 个答案:

答案 0 :(得分:1)

a(2) = 8中有split函数可能在此上下文中有用:

iteration_utilities

请注意,这会从结果中删除>>> from iteration_utilities import split >>> l1, l2 = split(your_list, key='name', eq=True) >>> l1 ['1', '15943882', '63', '1', '-9', '-9', '-9', '-27', '1', '145', '1', '233', '-9', '50', '20', '1', '0', '1', '2', '2', '3', '1981', '0', '0', '0', '0', '0', '1', '10.5', '6', '13', '150', '60', '190', '90', '145', '85', '0', '0', '2.3', '3', '-9', '-9', '0', '-9', '-9', '-9', '-9', '-9', '-9', '6', '-9', '-9', '-9', '2', '16', '1981', '0', '1', '1', '1', '-9', '1', '-9', '1', '-9', '1', '1', '1', '1', '1', '1', '1', '-9', '-9', '0', '-9', '-9', '-9', '-9', '-9', '-9', '-9', '-9', '-9', '0', '0', '0', '0'] (在本例中为key)。

该功能还可以将列表拆分为多个部分,如果不需要,您可以指定'name'

注意:我是图书馆maxsplit=1的作者。只需提一下:在纯Python中实现此功能也很容易:

iteration_utilities

答案 1 :(得分:1)

要拆分多个name元素上的列表,您可以使用标准模块中的itertools.groupby()

>>> import itertools as it
>>> data = ['1', '15943882', '63', '1', '-9', '-9', '-9', '-27', '1', '145', '1', ...]
>>> [list(g) for k, g in it.groupby(data, lambda x: x=='name') if not k]
[['1', '15943882', '63', '1', '-9', '-9', '-9', '-27', '1', '145', ...
 ['2', '15964847', '67', '1', '-9', '-9', '-9', '-27', '4', '160', ...

答案 2 :(得分:0)

idx = x.index('name')
(x[0:idx], x[idx+1:])

这将分为' name'。

的第一个索引