[英]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.reduce
和operator.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.