Python | Resta de tupla mutua en la lista

A veces, mientras trabajamos con datos, podemos tener un problema en el que necesitamos realizar una resta de tuplas entre todas las tuplas en la lista. Esto puede tener aplicación en muchos dominios. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Uso combinations()de la comprensión de listas +
Este problema se puede resolver mediante combinaciones de las funciones anteriores. En esto, usamos combinaciones() para generar todas las combinaciones posibles entre tuplas y la comprensión de listas se usa para alimentar la lógica de resta.

# Python3 code to demonstrate working of
# Mutual tuple subtraction in list
# Using list comprehension + combinations
from itertools import combinations
  
# initialize list 
test_list = [(2, 4), (6, 7), (5, 1), (6, 10)]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Mutual tuple subtraction in list
# Using list comprehension + combinations
res = [(b1 - a1, b2 - a2) for (a1, a2), (b1, b2) in combinations(test_list, 2)]   
  
# printing result
print("The mutual subtraction tuples are : " + str(res))
Producción :

The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The mutual subtraction tuples are : [(4, 3), (3, -3), (4, 6), (-1, -6), (0, 3), (1, 9)]

Método #2: Usar la comprensión de listas +zip() + operator.sub + combinations()
Las combinaciones de los métodos anteriores también pueden resolver este problema. En esto, realizamos la tarea de restar usando sub() y los elementos indexados similares se vinculan usando zip().

# Python3 code to demonstrate working of
# Mutual tuple subtraction in list
# Using list comprehension + zip() + operator.sub + combinations()
from itertools import combinations
import operator
  
# initialize list 
test_list = [(2, 4), (6, 7), (5, 1), (6, 10)]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Mutual tuple subtraction in list
# Using list comprehension + zip() + operator.sub + combinations()
res = [(operator.sub(*a), operator.sub(*b))\
      for a, b in (zip(y, x) for x, y in combinations(test_list, 2))]
  
# printing result
print("The mutual subtraction tuples are : " + str(res))
Producción :

The original list : [(2, 4), (6, 7), (5, 1), (6, 10)]
The mutual subtraction tuples are : [(4, 3), (3, -3), (4, 6), (-1, -6), (0, 3), (1, 9)]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *