python - Python 中两个列表的异或

标签 python list python-2.7 xor

我是Python初学者,我必须在两个列表之间进行异或(第一个长度为600,另一个长度为60)

我真的不知道该怎么做,如果有人能解释我怎么做,那将是我的荣幸。

我必须这样做才能找到 BPSK 信号模块,我想知道如何使用两个长度不同的列表来做到这一点。我看到这篇文章:Comparing two lists and only printing the differences? (XORing two lists)但列表的长度是相同的

感谢您的帮助,并对我的英语不好表示抱歉 罗马

最佳答案

给定序列seq1seq2,您可以计算 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/

相关文章:

java - 使用List Foreach代替for() Java

python - 如何跳过空关键字参数

python - 无法改变派生类的默认参数列表

Python:检查 "two".doc 文件是否是同一个文件?

python - 将拉普拉斯金字塔图像放置在黑色 Canvas 上会改变背景

python - 列表中的 bin 顺序值

Python:是否有使用多个键的优化字典类型(类似于数据库)?

python - 想要同时打开 tkinter 窗口和 matplotlib 窗口吗?

python - 我想同时运行 2 个 for 循环,可以吗?

python - 使用 python 将列表打印到 .txt 文件中的表的有效方法