【发布时间】:2019-10-19 06:54:12
【问题描述】:
我有一堆形式为 [0,0,1,0,1...] 的列表,我想对 2 个列表进行 XOR 并将输出作为列表给出。 喜欢: [ 0, 0, 1 ] 异或 [ 0, 1, 0 ] -> [ 0, 1, 1 ]
res = []
tmp = []
for i in Employee_Specific_Vocabulary_Dict['Binary Vector']:
for j in Course_Specific_Vocabulary_Dict['Binary Vector']:
tmp = [i[index] ^ j[index] for index in range(len(i))]
res.append(temp)
我的每个列表/向量的大小约为 3500 个元素,因此我需要一些东西来节省时间,因为这段代码需要 20 多分钟才能运行。
我有 3085 个列表,每个列表都需要与 4089 个其他列表进行异或运算。
如何在不显式遍历每个列表的情况下做到这一点?
【问题讨论】:
-
你试过什么?你用的代码在哪里?
-
“所以我需要一些东西来节省时间” - 不,你不需要,至少在你做某事并发现它太慢之前不需要。在您尝试之前,甚至很难猜出这样做所花费的时间数量级(是毫秒、微秒、秒还是分钟?)
-
好的,我将其标记为重复,因为简单的 XOR python 搜索给了我上面的链接。您可以轻松地使用 for 循环或列表推导
-
无论您选择哪种实现,实现的底层机制都会遍历这两个列表。你无法避免这一点。这是编程的一个基本方面。此外,3500 个元素绝对不算什么。即使是由于所有数组实际上都是哈希图而导致内存效率低下的 PHP,也可以在近乎即时的时间内处理具有 3500 个元素的数组。您没有任何理由担心这里的运行时效率。
-
实际上我有两组列表:第一组有 3085 个列表,第二组有 4089 个列表,我需要将 3085 个列表中的每一个与 4089 个列表中的每一个进行 XOR。因此运行代码需要很长时间(超过 20 分钟),我想以某种方式对其进行优化
标签: python python-3.x list large-data xor