为什么这样做:
a = ["one", "two","three"]
b = ["one","three"]
c = set(a)-set(b)
d = set(b)-set(a)
e = []
e.append(d)
e.append(c)
这不是:
example = set(set([a])-set([b])) + set(set([b])-set([a]))
在索引数量方面,我知道第一种情况会产生与第二种情况不同的结果。
如何在不使用联合或符号项目的情况下使用set制作第二个版本。
所需的输出:做一个最终列表,您将在其中获得:
output = ["two"]
仅使用set函数就可以找到不常见的元素,并使其成为一个衬里。
答案 0 :(得分:0)
这是一个愚蠢的错误:
>>> a=["one", "two", "three"]
>>> set(a)
set(['three', 'two', 'one'])
>>> set([a])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
请注意两次调用set()
之间的区别:一个传递列表,另一个传递包含子列表的列表并将其传递。
(一旦解决此问题,您将不得不解决以下问题:您不能添加设置:
不使用联合
+
运算符未在集合上定义,但如果是,则可能是联合运算符。)
答案 1 :(得分:0)
一个班轮:
list(set(a) - set(b)) # ["two"]