例:
入力: lst = [1、5、3、7、9] K = 12 出力: [(5、7)、(3、9)] 入力: lst = [2、1、5、7、-1、4] K = 6 出力: [(2、4)、(1、5)、(7、-1)]
方法#1: Pythonic Naive
これは、上記の問題に対する素朴なアプローチです。まず、空のリストを取得します' res'ループを開始し、指定された整数のリストの各要素をループします。各反復で、要素を抽出して「num」に格納し、合計Kの残りの差を見つけて、指定されたリストに差があるかどうかを確認します。
#
#指定された量の整数のリスト内のすべてのペアを検索するためのPython3プログラム
def
findPairs(lst、K):
res
=
[]
while
lst:
num
=
lst.pop()
diff
=
K
-
num
if
diff
lst:
res.append((diff、num) )
res.reverse()
< / p>
return
res
#ドライバーコード
lst
=
[
1
、
5
、
3
、
7
、
9
]
K
=
12
print
(findPairs(lst、K))
< b>終了:
[(5、7)、(3、9)]
方法2:を使用するcollections.Counter
このアプローチは、 collections.Counter
を使用して上記で説明したのと同じ方法に従います。
#Python3プログラムで
#指定された量の整数のリスト
from
コレクション
import
Counter
def
findPairs(lst、K):
res
=
[]
カウント
=
カウンター(lst)
for
x
in
lst:
y
=
K
-
x
if
(x!
=
y
および
count [y])
または
(x
=
=
y
および
count [y ]&gt;
1
):
res.append((x、y))
count.subtract((x、y) )
return
res
#ドライバーコード
lst
=
[
1
、
5
、
3
、
7
、
9
]
K
=
12
(findPairs(lst、K ))
終了:
[ (5、7)、(3、9)]
方法#3: itertools.combinations
(ナイーブな方法)
これはitertools.combinations
を使用するための素朴なアプローチです。 forループを使用して各組み合わせを調べ、必要な組み合わせを見つけます。
終了: [(5、7)、(3、9)] メソッド#4: 終了: [(5、7)、(3、9)] |