我有一个很长的名单。以下是摘录。
['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'
的索引在整个列表中并不总是相同的。
答案 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'。
的第一个索引