Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将列表元素按值分组为元组_Python_List_Tuples_Grouping - Fatal编程技术网

Python将列表元素按值分组为元组

Python将列表元素按值分组为元组,python,list,tuples,grouping,Python,List,Tuples,Grouping,我有以下清单: mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '

我有以下清单:

mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
显然,元素“*”在列表中分隔组。如何将元素出现在“*”之间进行分组?预期结果如下所示:

expected_list = [('Drama', 'Film Noir', 'Mystery', 'Romance'), ('Dance', 'Drama', 'Musical'), ('Crime', 'Drama'), ('Action', 'Drama', 'Period', 'Western'), ('Adaptation', 'Based-on', 'Comedy', 'Romance'), ('Mystery', 'Thriller'), ('Comedy')]
用于根据条目是否为*对条目进行分组,然后使用_ne_____不相等方法或等效的lambda表达式保留不为*的部分:

>>> import itertools
>>> mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
>>> [tuple(g) for k, g in itertools.groupby(mylist, key="*".__ne__) if k]
[('Drama', 'Film Noir', 'Mystery', 'Romance'),
 ('Dance', 'Drama', 'Musical'),
 ('Crime', 'Drama'),
 ('Action', 'Drama', 'Period', 'Western'),
 ('Adaptation', 'Based-on', 'Comedy', 'Romance'),
 ('Mystery', 'Thriller'),
 ('Comedy',)]
用于根据条目是否为*对条目进行分组,然后使用_ne_____不相等方法或等效的lambda表达式保留不为*的部分:

>>> import itertools
>>> mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
>>> [tuple(g) for k, g in itertools.groupby(mylist, key="*".__ne__) if k]
[('Drama', 'Film Noir', 'Mystery', 'Romance'),
 ('Dance', 'Drama', 'Musical'),
 ('Crime', 'Drama'),
 ('Action', 'Drama', 'Period', 'Western'),
 ('Adaptation', 'Based-on', 'Comedy', 'Romance'),
 ('Mystery', 'Thriller'),
 ('Comedy',)]
这是一个经典:

将您的输入分组为*和非-*,删除*组,并将非*组分组。

这是一个经典:

将您的输入分组为*和非-*,删除*组,并对非-*组进行元组设置