假设我有几个整数列表,如下所示:
[0,3,4]
[2,3,4,7]
[2,3,4,6]
Run Code Online (Sandbox Code Playgroud)
什么是最有效/最pythonic方式来构建至少一个列表中但不会出现在所有列表中的所有元素的单个列表?在这种情况下,它会
[0,2,7,6]
Run Code Online (Sandbox Code Playgroud)
你的问题暗示了答案..如果你用"set"代替"list".正如StephenTG发布的那样,只需获得联盟和所有列表交集的区别.
使用集合的优点Counter是您不需要假设每个列表中只出现一次的值.
无论您拥有多少列表,以下内容均适用:
> list_of_sets = [set(l) for l in lists]
> set.union(*list_of_sets) - set.intersection(*list_of_sets)
{0, 2, 6, 7}
Run Code Online (Sandbox Code Playgroud)