Python-Programm, um alle möglichen Paare mit einer bestimmten Summe zu finden

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

Beispiele:

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

Methode Nr. 1: Pythonic Naive

Dies ist ein naiver Ansatz für das obige Problem. Zuerst nehmen wir eine leere Liste ' res ' und starten Sie die Schleife und durchlaufen Sie jedes Element der angegebenen Liste von Ganzzahlen. Extrahiere bei jeder Iteration das Element, speichere es in "num", finde die verbleibende Differenz für die Summe K und überprüfe, ob es eine Differenz in der gegebenen Liste gibt oder nicht.


# Python3-Programm zum Finden aller Paare in
# Liste von ganzen Zahlen mit einem bestimmten Betrag


def findPairs (lst, K):

res = []

while lst:

num = lst.pop ()

diff = K - num

if diff in lst:

res.append ((diff, num) )

res.reverse ()

return res


# Treibercode

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

K = 12

print (findPairs (lst, K))

< b> Beenden:

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

Methode Nr. 2: Mit collections.Counter

Dieser Ansatz folgt der gleichen Methode wie die oben besprochene unter Verwendung von collections.Counter .


# Python3-Programm zum Finden aller Paare in
# Liste von Ganzzahlen mit einer bestimmten Menge

aus Sammlungen importieren Counter

def findPairs (lst, K):

res = []

count = Zähler (lst)


für x in lst:

y = K - x

if (x! = y und count [y]) oder (x = = y und count [y ] > 1 ):

res.append ((x, y))

count.subtract ((x, y) )


return res


# Treibercode

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

K = 12

print (findPairs (lst, K ))

Beenden:

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

Methode Nr. 3: itertools.combinations (Naive Methode)

Dies ist ein naiver Ansatz zur Verwendung von itertools.combinations . Wir verwenden eine for-Schleife, um jede Kombination durchzugehen und die gewünschte zu finden.


< tr>

# Python3-Programm zum Finden aller Paare in
# Liste von Ganzzahlen mit a gegebener Betrag


von itertools import Kombinationen


def findPairs (lst, K):

res = []

für var in Kombinationen (lst, 2 ):

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

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


return res


# Treibercode

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

K = 12

print (findPairs (lst, K))

Beenden:

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

Methode Nr. 4: itertools.combinations (effektive Methode)


# Python3-Programm zum Finden aller Paare in
# Liste von ganzen Zahlen mit einer bestimmten Summe

aus itertools import Kombinationen


def findPairs (lst, K):


zurückgeben [pair for pair in Kombinationen (lst, 2 ) if sum (pair) = = K]


# Treibercode

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

K = 12

print (findPairs (lst, K))

Beenden:

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