如何根据输入列表中的模式(单词)制作带有子列表的列表?

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)