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
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.
|
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)]