Python で複数のリストとタプルからタプルのリストを作成する

Vaibhav Vaibhav 2023年10月10日
  1. Python で複数のリストとタプルからタプルのリストを手動で作成する
  2. Python の zip() メソッドを使用して、複数のリストとタプルからタプルのリストを作成する
Python で複数のリストとタプルからタプルのリストを作成する

複数のリストとタプルを操作する場合、オブジェクト内に存在する値を組み合わせる必要があることがよくあります。このアプローチにより、それらの反復が非常に簡単になります。Python を使用して Web アプリケーションまたは API を開発する場合、ほとんどの場合、このアプローチに従って、欠落している値がないことを確認します。さらに、HTML テンプレート内でこれらの値を反復処理することが非常に重要になります。

この記事では、Python で複数のリストからタプルとタプルのリストを作成する方法を学習します。

Python で複数のリストとタプルからタプルのリストを手動で作成する

複数のリストおよびタプルからタプルのリストを作成する最も基本的なアプローチは、スタブまたはユーティリティ関数を自分で作成することです。この関数は、複数のリストとタプルを受け入れ、タプルのリストを返します。リストを反復処理する間、ロジックは、すべてのリストの中で最小の長さのみを考慮し、そのインデックスまでの要素のみを追加するようにする必要があります。次の Python コードは、説明したアプローチを実装しています。

def convert(*args):
    """
    Returns a list of tuples generated from multiple lists and tuples
    """
    for x in args:
        if not isinstance(x, list) and not isinstance(x, tuple):
            return []

    size = float("inf")

    for x in args:
        size = min(size, len(x))

    result = []

    for i in range(size):
        result.append(tuple([x[i] for x in args]))

    return result


a = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]
b = ["H", "E", "L", "L", "O"]
c = [True, False, False, True, True, True]
d = [100, 200, 300, 400]
result = convert(a, b, c, d)
print(result)

出力:

[(1.1, 'H', True, 100), (2.2, 'E', False, 200), (3.3, 'L', False, 300), (4.4, 'L', True, 400)]

convert() 関数は、引数として複数のリストとタプルを受け入れます。まず、渡された各引数が list または tuple のインスタンスであるかどうかをチェックします。そうでない場合は、空のリストを返します。次に、すべてのリストとタプルの中で最小の長さ、たとえば n を見つけます。この操作により、IndexError 例外が発生しないようになります。

最小サイズが見つかると、convert() 関数は空のリストを作成し、すべての引数を n 回繰り返します。反復ごとにタプルが作成され、前に作成された空のリストに追加されます。反復が完了すると、タプルのリストが回答として返されます。

引数の数を n、最小の長さを m とすると、上記の関数の時間計算量は O(m * n) であり、空間計算量も O(m * n) です。結果を作成する二重ネストされた for ループのため、時間計算量は O(m * n) です。

Python の zip() メソッドを使用して、複数のリストとタプルからタプルのリストを作成する

zip() 関数は、Python の組み込みユーティリティ関数です。リストやタプルなどの複数の反復可能なオブジェクトを受け入れ、反復可能なオブジェクトを返します。この zip オブジェクトは、要素をタプルのリストとして格納します。zip() 関数の実装は、前のセクションで実装した convert() 関数と似ていますが、正確ではありません。

zip() 関数によって返される値は、反復可能な zip オブジェクトです。出力すると、出力は次のようになります。

<zip object at 0x7fee6d0628c0>

理論が完成したので、ユースケースで zip() メソッドを使用する方法を理解しましょう。同じことについては、次のコードを参照してください。

a = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]
b = ("H", "E", "L", "L", "O")
c = [True, False, False, True, True, True]
d = [100, 200, 300, 400]
result = zip(a, b, c, d)

for x in result:
    print(x)

出力:

(1.1, 'H', True, 100)
(2.2, 'E', False, 200)
(3.3, 'L', False, 300)
(4.4, 'L', True, 400)
著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

関連記事 - Python List

関連記事 - Python Tuple