Pythonic方法创建包含在多个列表中的所有值的联合

AJ.*_*AJ. 64 python list set-union

在python中进行一些XML处理.(编辑:我被迫在这个项目中使用Python 2.4,嘘!)我想知道什么是Pythonic最常用的方法(在多个列表中创建所有值的联合):

lists = [[1,4,3,2,4], [4,5]]
Run Code Online (Sandbox Code Playgroud)

sth*_*sth 121

set.union 做你想要的:

>>> results_list = [[1,2,3], [1,2,4]]
>>> results_union = set().union(*results_list)
>>> print(results_union)
set([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

您也可以使用两个以上的列表执行此操作.

  • 您还可以通过将第2行更改为`results_union = set.union(*(在result_list中为el设置(el))来保存创建空集.) (2认同)

Ale*_*lli 11

因为你似乎正在使用Python 2.5(如果你需要一个A版本的话,你很高兴提及!= 2.6,当前的生产版本,顺便说一下;-)并且想要一个列表而不是一个集合作为结果,我建议:

   import itertools

   ...

   return list(set(itertools.chain(*result_list)))
Run Code Online (Sandbox Code Playgroud)

itertools通常是处理迭代器的好方法(因此有很多种序列或集合),我衷心建议你熟悉它. itertools.chain特别是,这里记录在案.