我有listA=[[0,1,2]]
和listB=[[0,1,2],[0,1,3],[0,2,3]]
,并且想要获得在listB中但不在listA中的元素,即,我想要的输出是listC=[[0,1,3],[0,2,3]]。
我已经使用列表理解得到了listC:
listA=[[0,1,2]]
listB=[[0,1,2],[0,1,3],[0,2,3]]
listC=[b for b in listB if b not in listA]
但是,如果我想用另一种方式来做,即在下面的代码中使用setdifference,我得到了错误消息不可处理类型:"list"。
listA=[[0,1,2]]
listB=[[0,1,2],[0,1,3],[0,2,3]]
listC=list(set(listB)-set(listA))
为什么会弹出此错误?如何修复?谢谢
集合需要散列对象,而列表是不可散列的(因为它们是可变的(。
因此,您需要转换为元组并返回到列表:
listA=[[0,1,2]]
listB=[[0,1,2],[0,1,3],[0,2,3]]
listC=list(map(list,set(map(tuple,listB))-set(map(tuple,listA))))
listC
输出:[[0, 1, 3], [0, 2, 3]]