簡體   English   中英

如何在列表列表中執行按位異或

[英]How to perform Bitwise Xor in list of list

假設我有一個列表列表[[1,2,3],[1,2,3,4]]

我怎樣才能找到所有列表元素列表的異或,

由於[1^2^3]的 xor 是0[1^2^3^4]的 xor 是4所以結果列表將是

[0,4] 

提前致謝。

您可以將列表推導與functools.reduceoperator.xor一起使用。

from operator import xor
from functools import reduce

seq = [[1,2,3],[1,2,3,4]]
res = [reduce(xor, i) for i in seq]

print(res)

Output

[0, 4]

編輯:獲取“具有最大異或值的列表”

這將返回一個“列表列表”,其中包含所有 xor 值與max_xor相同的列表

max_xor = max(res)  # from above
max_xor_lists = [i for i, j in zip(seq, res) if j == max_xor]
print(max_xor_lists)

Output

[[1, 2, 3, 4]]

如果您只需要第一個具有最大異或值的列表,則max_xor_lists[0]將給出與此條件匹配的第一個列表。

如果唯一的結果是獲得具有最大異或值的列表(IOW,不想要中間異或結果),那么正如 Alex 在評論中所建議的那樣

from operator import xor
from functools import reduce, partial

seq = [[1,2,3],[1,2,3,4]]
_xor = partial(reduce, xor)
max_xor_list = max(seq, key=_xor)
print(max_xor_list)

Output

[1, 2, 3, 4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM