gpt4 book ai didi

python - Python 中两个列表的异或

转载 作者:行者123 更新时间:2023-12-03 02:05:51 27 4
gpt4 key购买 nike

我是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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com