如何根据输入列表中的模式(单词)制作带有子列表的列表?
How to make list with sublists based on pattern(word) from a input list?
我有一个列表,其中特定的语句块由 foo 分隔,如下所示:
a=['E3P.B99990001.pdb_138:6.923:0.241:6.116', 'E3P.B99990001.pdb_397:15.856:3.506:8.144', 'foo',
'E3P.B99990002.pdb_138:4.499:4.286:8.260', 'E3P.B99990002.pdb_397:14.897:3.238:9.338', 'foo']
在这里,我想为每个博客创建一个包含子列表的主列表,每个博客由模式 "foo" 分隔,如下所示。
Mainlist=[
['E3P.B99990001.pdb_138:6.923:0.241:6.116',
'E3P.B99990001.pdb_397:15.856:3.506:8.144']#sublist1 (read input list values until first "foo" and make first sublist)
['E3P.B99990002.pdb_138:6.923:0.241:6.116',
'E3P.B99990002.pdb_397:15.856:3.506:8.144']#sublist2 (read input list values until first "foo" to second "foo" and make second sublist)
主要思想是使用"foo"作为分隔符来创建不同的子列表
]
我希望它是可以理解的。如果有人知道,你能帮我解决一下吗。
提前致谢
代码基于 #Brien 给出了准确的答案:
sub = []
for item in a:
if item == 'foo':
ATOM_COORDINATE.append(a)
sub = []
else:
a.append(item)
print sub
输出:
[
['E3P.B99990001.pdb_138:6.923:0.241:6.116', 'E3P.B99990001.pdb_397:15.856:3.506:8.144', 'E3P.B99990001.pdb_424:8.558:1.315:6.627', 'E3P.B99990001.pdb_774:14.204:-5.490:24.812', 'E3P.B99990001.pdb_865:15.545:4.258:10.007', 'E3P.B99990001.pdb_929:16.146:-6.081:24.770'],
['E3P.B99990002.pdb_138:4.499:4.286:8.260', 'E3P.B99990002.pdb_397:14.897:3.238:9.338', 'E3P.B99990002.pdb_424:5.649:5.914:8.639', 'E3P.B99990002.pdb_774:12.114:-6.864:23.897', 'E3P.B99990002.pdb_865:15.200:3.910:11.227', 'E3P.B99990002.pdb_929:13.649:-6.894:22.589']
]
# assuming your original list is called biglist
Mainlist = []
sublist = []
for item in biglist:
if item == 'foo':
Mainlist.append(sublist)
sublist = []
else:
sublist.append(item)
我有一个列表,其中特定的语句块由 foo 分隔,如下所示:
a=['E3P.B99990001.pdb_138:6.923:0.241:6.116', 'E3P.B99990001.pdb_397:15.856:3.506:8.144', 'foo',
'E3P.B99990002.pdb_138:4.499:4.286:8.260', 'E3P.B99990002.pdb_397:14.897:3.238:9.338', 'foo']
在这里,我想为每个博客创建一个包含子列表的主列表,每个博客由模式 "foo" 分隔,如下所示。
Mainlist=[
['E3P.B99990001.pdb_138:6.923:0.241:6.116',
'E3P.B99990001.pdb_397:15.856:3.506:8.144']#sublist1 (read input list values until first "foo" and make first sublist)
['E3P.B99990002.pdb_138:6.923:0.241:6.116',
'E3P.B99990002.pdb_397:15.856:3.506:8.144']#sublist2 (read input list values until first "foo" to second "foo" and make second sublist)
主要思想是使用"foo"作为分隔符来创建不同的子列表 ]
我希望它是可以理解的。如果有人知道,你能帮我解决一下吗。
提前致谢
代码基于 #Brien 给出了准确的答案:
sub = []
for item in a:
if item == 'foo':
ATOM_COORDINATE.append(a)
sub = []
else:
a.append(item)
print sub
输出:
[
['E3P.B99990001.pdb_138:6.923:0.241:6.116', 'E3P.B99990001.pdb_397:15.856:3.506:8.144', 'E3P.B99990001.pdb_424:8.558:1.315:6.627', 'E3P.B99990001.pdb_774:14.204:-5.490:24.812', 'E3P.B99990001.pdb_865:15.545:4.258:10.007', 'E3P.B99990001.pdb_929:16.146:-6.081:24.770'],
['E3P.B99990002.pdb_138:4.499:4.286:8.260', 'E3P.B99990002.pdb_397:14.897:3.238:9.338', 'E3P.B99990002.pdb_424:5.649:5.914:8.639', 'E3P.B99990002.pdb_774:12.114:-6.864:23.897', 'E3P.B99990002.pdb_865:15.200:3.910:11.227', 'E3P.B99990002.pdb_929:13.649:-6.894:22.589']
]
# assuming your original list is called biglist
Mainlist = []
sublist = []
for item in biglist:
if item == 'foo':
Mainlist.append(sublist)
sublist = []
else:
sublist.append(item)