ペアからタプルを作成する 質問する

ペアからタプルを作成する 質問する

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

使用できますitertoolsproductそして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))

productt1ネストされた for ループ構造 (および変数)によって等しく生成されたタプル (2 つの要素) を生成しt2、および変数permutationsによって等しく生成された 2 つの順列を生成します。cd

おすすめ記事