返回列表列表之间的差异

时间:2018-06-18 17:50:55

标签: python comparison spyder

我一直难以尝试创建一种方法来返回列表列表之间的差异。这基本上就是我要找的东西:

s1r1=[[1,2,3,4,5,6],[2,4,6,8]]
uniq=[1,3,5,8]

我一直在尝试使用这种方法

list(set(s1r1[0])-set(s1r1[1]))

但它只返回了数字'8'。然后我尝试使用这种格式

list(set(a).symmetric_difference(set(b))

现在说我脚本的最后一行有语法错误,即使没有任何内容。有没有人有任何见解?

5 个答案:

答案 0 :(得分:1)

使用^运算符进行symmetric_difference

a=set([1,2,3,4,5,6])
b=set([2,4,6,8])
a^b

输出

{1,3,5,8}

答案 1 :(得分:0)

>>> s1r1 = [[1,2,3,4,5,6],[2,4,6,8]]
>>> list(set(s1r1[0]).symmetric_difference(s1r1[1]))
['1', '5', '8', '3']

或者你是^运算符的对称差异。

>>> list (set(s1r1[0]) ^ set(s1r1[1]))
[1, 3, 5, 8]

答案 2 :(得分:0)

这适用于任意数量的列表:

[[1, 3, 5], [8]]

收率:

print([j for i in uniq for j in i])

并将其作为单个列表返回:

[1, 3, 5, 8]

收率:

 <script>
  // with jquery
 $('.dropdown-menu li').click(function(el) {
  console.log(el.target.textContent)
 })

 // native
 const list = document.querySelectorAll('.dropdown-menu li');
 list.forEach(el => el.addEventListener('click', function listClick() {
   console.log(el.textContent);
 }));
</script>

答案 3 :(得分:0)

您无需投射list即可实现对称差异 (忽略他们来自我的iPython终端的In: Out:

In [16]: s1r1 = [[1,2,3,4,5,6], [2,4,6,8]]

In [19]: a = set(s1r1[0])

In [20]: b = set(s1r1[1])

In [21]: ans = a.union(b) - a.intersection(b)

In [22]: print ans
set([8, 1, 3, 5])

In [23]: ans = a.symmetric_difference(b)

In [24]: print ans
set([1, 3, 5, 8])

对称差异恰好与交叉点相反

答案 4 :(得分:0)

 <button type="button" onclick="document.getElementById('formButton').disabled=true;document.getElementById('formButton2').disabled=false;" class="fbutton" id="formButton">1</button>
<button type="button" onclick="this.disabled=true;document.getElementById('formButton').disabled=false;" class="fbutton" id="formButton2">2</button>