作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是Python初学者,我必须在两个列表之间进行异或(第一个长度为600,另一个长度为60)
我真的不知道该怎么做,如果有人能解释我怎么做,那将是我的荣幸。
我必须这样做才能找到 BPSK 信号模块,我想知道如何使用两个长度不同的列表来做到这一点。我看到这篇文章:Comparing two lists and only printing the differences? (XORing two lists)但列表的长度是相同的
感谢您的帮助,并对我的英语不好表示抱歉罗马
最佳答案
给定序列seq1
和seq2
,您可以计算 symmetric difference与
set(seq1).symmetric_difference(seq2)
例如,
In [19]: set([1,2,5]).symmetric_difference([1,2,9,4,8,9])
Out[19]: {4, 5, 8, 9}
提示:生成具有较小列表的集合通常会更快:
In [29]: %timeit set(range(60)).symmetric_difference(range(600))
10000 loops, best of 3: 25.7 µs per loop
In [30]: %timeit set(range(600)).symmetric_difference(range(60))
10000 loops, best of 3: 41.5 µs per loop
您可能想要使用对称差异
而不是^
(尽管其语法很漂亮)的原因是因为对称差异
方法可以将列表作为输入。 ^
要求设置两个输入。将两个列表转换为集合的计算量比最低要求要多一些。
此问题已被标记为 this question 的重复问题然而,这个问题正在寻求不使用集合的解决方案。
已接受的解决方案,
[a for a in list1+list2 if (a not in list1) or (a not in list2)]
如果允许集合,则
不是推荐的对两个列表进行异或的方法。一方面,速度慢了 100 倍以上:
In [93]: list1, list2 = range(600), range(60)
In [94]: %timeit [a for a in list1+list2 if (a not in list1) or (a not in list2)]
100 loops, best of 3: 3.35 ms per loop
关于python - Python 中两个列表的异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736641/
我是一名优秀的程序员,十分优秀!