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