2つのタプルから可能なすべてのペアを表すタプルを作成したい
これは私が受け取りたいものの例です:
first_tuple = (1, 2)
second_tuple = (4, 5)
mult_tuple(first_tuple, second_tuple)
出力:
((1, 4), (4, 1), (1, 5), (5, 1), (2, 4), (4, 2), (2, 5), (5, 2))
これは私がやったことですが、少し面倒に見えますが成功しました:
def mult_tuple(tuple1, tuple2):
ls=[]
for t1 in tuple1:
for t2 in tuple2:
c=(t1,t2)
d=(t2,t1)
ls.append(c)
ls.append(d)
return tuple(ls)
first_tuple = (1, 2)
second_tuple = (4, 5)
mult_tuple(first_tuple, second_tuple)
私が書いたコードは動作しますが、もっと良いコードを探しています。
よろしくお願いします。
ベストアンサー1
使用できますitertools
のproduct
そしてpermutations
:
from itertools import product, permutations
first_tuple, second_tuple = (1, 2), (4, 5)
result = ()
for tup in product(first_tuple, second_tuple):
result += (*permutations(tup),)
print(result)
出力:
((1, 4), (4, 1), (1, 5), (5, 1), (2, 4), (4, 2), (2, 5), (5, 2))
product
t1
ネストされた for ループ構造 (および変数)によって等しく生成されたタプル (2 つの要素) を生成しt2
、および変数permutations
によって等しく生成された 2 つの順列を生成します。c
d