Python-programma om alle mogelijke paren met een gegeven som te vinden

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

Voorbeelden:

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

Methode # 1: Pythonic Naïef

Dit is een naïeve benadering van het bovenstaande probleem. Eerst nemen we een lege lijst ' onderzoek ' en start de lus en loop door elk element van de gegeven lijst met gehele getallen. Pak bij elke iteratie het element uit, sla het op in "num", zoek het resterende verschil voor de som K en controleer of er een verschil is in de gegeven lijst of niet.


# Python3-programma voor het vinden van alle paren in
# lijst met gehele getallen met een bepaald aantal


def findPairs (lst, K):

res = []

while lst:

num = lst.pop ()

diff = K - aantal

if diff in lst:

res.append ((diff, num) )

res.reverse ()

return res


# Driver code

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

K = 12

print (findPairs (lst, K))

< b> Afsluiten:

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

Methode #2: Met collections.Counter

Deze aanpak volgt dezelfde methode als hierboven besproken met behulp van collections.Counter .


# Python3-programma om alle paren in
te vinden # lijst met gehele getallen met een bepaald aantal

uit collecties import Teller

def findPairs (lst, K):

res = []

count = Teller (lst)


voor x in lst:

y = K - x

if (x! = y en count [y]) of (x = = y en count [y ] > 1 ):

res.append ((x, y))

count.subtract ((x, y) )


return res


# Chauffeurscode

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

K = 12

print (findPairs (lst, K ))

Afsluiten:

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

Methode # 3: itertools.combinations (naïeve methode)

Dit is een naïeve benadering van het gebruik van itertools.combinations . We gebruiken een for-lus om elke combinatie te doorlopen en de gewenste te vinden.


< tr>

# Python3-programma om alle paren te vinden in
# lijst met gehele getallen met een gegeven bedrag


van itertools import combinaties


def findPairs (lst, K):

res = []

voor var in combinaties (lst, 2 ):

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

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


return res


# Driver code

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

K = 12

print (findPairs (lst, K))

Afsluiten:

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

Methode # 4: itertools.combinations (effectieve methode)


# Python3-programma om alle paren te vinden in
# lijst met gehele getallen met een bepaalde som

uit itertools import combinaties


def findPairs (lst, K):


return [paar voor paar in combinaties (lst, 2 ) if sum (paar) = = K]


# Driver code

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

K = 12

print (findPairs (lst, K))

Afsluiten:

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