3
zip()の時間複雑度はどのように計算できますか?Pythonでzip()の時間の複雑さはどのくらいですか?
testList = [[1,2,3]for _ in range(5)]
zip(*testList)
zip()の時間複雑度はどのように計算できますか?Pythonでzip()の時間の複雑さはどのくらいですか?
testList = [[1,2,3]for _ in range(5)]
zip(*testList)
N iterablesを圧縮するとします。 Pythonの3.xので
それだけ(ジップオブジェクトと呼ばれる)特殊なイテラブルを割り当て、内部フィールドにパラメータ配列を割り当てるように、ジップ機能自体は、O(1)
時間で実行されます。インタプリタはパラメータを配列に変換する必要があるため、関数呼び出し自体(制御がzipに達する前)はO(N)
です。それ以降のすべてのnext
イテレータの呼び出しもO(N)
で実行されます。したがって、ジップオブジェクトの排除は、イテラブル自体がアイテムを生成するのにかかる時間(ジップとは独立しているため)を除いて、イテラブルの平均(または最小)長さをMとすると、O(N*M)
です。
python 2.xで、zip関数はリストを返します。そのリストは、呼び出し中に構築する必要があります。つまり、前の例のイテレータを使い切ることと同じです(O(N*M)
)。これは、圧縮されたiterablesで費やされた時間をカウントしません。
ここで、Nは最短リストの長さ、Mはリストの数です –
'zip'が両方の機能が異なるため、Python 2とPython 3のどちらを使用するかを区別する必要があります。 –
Python 3ではO(1)と呼ぶ呼び出し自体があると思いますが、評価は同じです。多分私はまったく間違っています。 –