假设我有一个清单:list1 = ['abc','a','e','i','o','abc','l','m','n']我可以知道如何获取“abc”之后的所有元素并分组或制作它的子列表,包括“abc”本身吗?结果变成:[['abc','a','e','i','o'],['abc','l','m','n']]我已经尝试过了,但它不像我想要的那样: lineslist=[] for line in list1: if line.startswith('abc'): linelist.append(line) else: linelist.append(line)
2 回答

慕森卡
TA贡献1806条经验 获得超8个赞
直截了当:
lst = ['abc','a','e','i','o','abc','l','m','n']
res = []
for s in lst:
if s == 'abc':
res.append([])
if res: res[-1].append(s)
print(res)
输出:
[['abc', 'a', 'e', 'i', 'o'], ['abc', 'l', 'm', 'n']]

慕少森
TA贡献2019条经验 获得超9个赞
最快的方法:
>>> lst = ['abc','a','e','i','o','abc','l','m','n']
>>> seps = [i for i in range(len(lst)) if lst[i] == 'abc']
>>> if len(seps) :
... seps.append( len(lst) )
>>> print [lst[a:b] for a,b in zip(seps, seps[1:])]
[['abc', 'a', 'e', 'i', 'o'], ['abc', 'l', 'm', 'n']]
添加回答
举报
0/150
提交
取消