Python组将元素按值列入元组

Uma*_*suf 1 python grouping tuples list

我有这个清单:

mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
Run Code Online (Sandbox Code Playgroud)

显然,元素'*'是分隔列表中的组.如何在'*'之间对元素的出现进行分组?期望的结果如下所示:

expected_list = [('Drama', 'Film Noir', 'Mystery', 'Romance'), ('Dance', 'Drama', 'Musical'), ('Crime', 'Drama'), ('Action', 'Drama', 'Period', 'Western'), ('Adaptation', 'Based-on', 'Comedy', 'Romance'), ('Mystery', 'Thriller'), ('Comedy')]
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 5

这是一个经典的用例itertools.groupby:

from itertools import groupby

expected_list = [tuple(grp) for isstar, grp in groupby(mylist, key='*'.__eq__) if not isstar]
Run Code Online (Sandbox Code Playgroud)

这会将您的输入分组为运行*和不运行*,删除*组,然后运行tuple*组.