Programa de Python para encontrar todos los pares posibles con una suma dada

| | | | | | | | | | | |

Ejemplos:

Entrada:  lst = [1, 5, 3, 7, 9] K = 12 Salida:  [(5, 7), (3, 9)] Entrada:  lst = [2, 1, 5, 7, -1, 4] K = 6 Salida:  [(2, 4), (1, 5), (7, -1)] 

Método # 1: Pythonic Naive

Este es un enfoque ingenuo para el problema anterior. Primero, tomamos una lista vacía ' resolución ' e inicie el bucle y recorra cada elemento de la lista dada de enteros. En cada iteración, extraiga el elemento, guárdelo en "num", encuentre la diferencia restante para la suma K y verifique si hay una diferencia en la lista dada o no.


# Programa Python3 para encontrar todos los pares en
# lista de enteros con una cantidad dada


def findPairs (lst, K):

res = []

while < /código> lst:

num = lst.pop ()

diff = K - num

si diff in lst:

res.append ((diff, num) )

res.reverse()

return res


# Código del controlador

lst < /código> = [ 1 , 5 , 3 , 7 , 9 ]

K = 12

imprimir (findPairs (lst, K))

< b> Salir:

[(5, 7) , (3, 9)] 

Método # 2: Usando collections.Counter

Este enfoque sigue el mismo método que se discutió anteriormente usando collections.Counter.


# Programa Python3 para encontrar todos los pares en
# lista de enteros con una cantidad dada

de colecciones importar Contador

def findPairs (lst, K):

res = []

cuenta = Contador (lst)


para x en lst:

y < /código> = K - x

if (x! = y y cuenta [y]) o (x = = y y cuenta [y ] > 1 ):

res.append ((x, y))

contar.restar ((x, y) )


return res


# Código del controlador

< clase de código = "simple"> lst = [ 1 , 5 , 3 , 7 , 9 ]

K = 12

print (findPairs (lst, K ))

Salir:

[ (5, 7), (3, 9)] 

Método # 3: itertools.combinations (Método Ingenuo)

Este es un enfoque ingenuo para usar itertools.combinations. Usamos un ciclo for para recorrer cada combinación y encontrar la que queremos.


< tr>

Salir:

[(5, 7), (3, 9)] 

Método # 4: itertools.combinations (método efectivo)


# Programa Python3 para encontrar todos los pares en
# lista de enteros con una suma dada

de itertools importar combinaciones


def findPairs (lst, K):


volver [par para par en combinaciones (lst, 2 ) si suma (par) = = K]


# Código del controlador < /código>

lst = [ < código clase = "valor"> 1 , 5 , 3 , 7 , < /código> 9 ]

K = 12

print (findPairs (lst, K))

# Programa Python3 para encontrar todos los pares en
# lista de enteros con un cantidad dada


de itertools import combinaciones


def findPairs (lst, K):

res = []

for var in < /código> combinaciones (lst, 2 ):

si var [ 0 ] + var [ 1 ] = = K:

res.append ((var [ 0 ], var [ 1 ]))


return res


# Código del controlador

lst = [ 1 , 5 , 3 , 7 , 9 ]

K = 12 < /código>

imprimir (findPairs (lst, K))

Salir:

[(5, 7), (3, 9)]