📜  Python|记录列表异或

📅  最后修改于: 2022-05-13 01:55:46.142000             🧑  作者: Mango

Python|记录列表异或

有时,在编程时,我们可能需要在元组列表元素之间执行某些按位运算。这是一个必不可少的实用程序,因为我们多次遇到按位运算。让我们讨论可以执行 XOR 的某些方式。

方法 #1:使用reduce() + lambda + “^” operator + 循环
可以组合上述功能来执行此任务。我们可以首先使用循环展平元组列表,然后使用 reduce() 来累积 lambda函数指定的 XOR 逻辑的结果。仅适用于 Python2。

# Python code to demonstrate working of 
# Records list XOR
# Using reduce() + lambda + "^" operator + loops
  
# initializing list 
test_list = [(4, 6), (2, ), (3, 8, 9)] 
  
# printing original list 
print("The original list is : " + str(test_list)) 
  
# Records list XOR
# Using reduce() + lambda + "^" operator + loops
temp = []
for sub in test_list:
  for ele in sub:
    temp.append(ele)
res = reduce(lambda x, y: x ^ y, temp) 
  
# printing result 
print("The Bitwise XOR of records list elements are : " + str(res)) 
输出 :
The original list is : [(4, 6), (2, ), (3, 8, 9)]
The Bitwise XOR of records list elements are : 2

方法 #2:使用reduce() + operator.ixor + chain()
也可以使用此方法执行此任务。在这种情况下,上述方法中 lambda函数执行的任务是使用 ior函数执行累积异或运算,将元素展平到列表是使用 chain() 执行的。仅适用于 Python2。

# Python code to demonstrate working of 
# Records list XOR
# Using reduce() + operator.ixor 
from operator import ixor 
from itertools import chain
  
# initializing list 
test_list = [(4, 6), (2, ), (3, 8, 9)] 
  
# printing original list 
print("The original list is : " + str(test_list)) 
  
# Records list XOR
# Using reduce() + operator.ixor 
temp = list(chain(*test_list))
res = reduce(ixor, temp) 
  
# printing result 
print("The Bitwise XOR of records list elements are : " + str(res)) 
输出 :
The original list is : [(4, 6), (2, ), (3, 8, 9)]
The Bitwise XOR of records list elements are : 2