Python でリストの長さを調べる方法
List は Python プログラミングの不可欠な部分であり、すべての Python ユーザーが学習する必要があり、そのユーティリティと操作の知識を持っていることは不可欠であり、常にプラスとなります。
多くの操作はリスト内で実行されますが、この記事ではリストの長さについて説明します。リストの長さは、リストに含まれる要素の数を意味します。リストの長さを見つけるための 8 つの異なる方法を見ていきます。 パイソン 。
例:
Input: lst = [10,20,30,40] Output: 4 Explanation: The output is 4 because the length of the list is 4.
Python でリストの長さを求める
この記事で説明する方法は次のとおりです。
- 使用する のみ() 関数
- 素朴なメソッドの使用
- length_hint() の使用
- 使用する 和() 方法
- を使って リストの内包表記
- 使用する 再帰
- 使用する 列挙する 関数
- 使用する コレクション モジュール
1. len() 関数を使用してリストの長さを求める
パイソン のみ() function は Python の組み込み関数です。 len 関数のかっこ内にオブジェクトを渡すことで、オブジェクトの長さを調べるために使用できます。
Python3
# Python len()> li> => [> 10> ,> 20> ,> 30> ]> n> => len> (li)> print> (> 'The length of list is: '> , n)> |
出力:
The length of list is: 3
時間計算量: O(n)、n はリストの長さ
補助スペース: ○(1)
2. 単純な方法を使用してリストの長さを求める
この方法では、ループを実行し、リストの最後の要素までカウンタを増やしてそのカウントを知るだけです。これは、他の現在の技術がない場合に使用できる最も基本的な戦略です。
Python3
# Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list using loop> # Initializing counter> counter> => 0> for> i> in> test_list:> > # incrementing counter> > counter> => counter> +> 1> # Printing length of list> print> (> 'Length of list using naive method is : '> +> str> (counter))> |
出力:
The list is : [1, 4, 5, 7, 8] Length of list using naive method is : 5
時間計算量: の上)
補助スペース: ○(1)
3. length_hint() メソッドを使用してリストの長さを求める
この手法は、リストの長さを求めるためのあまり知られていない手法です。この特定のメソッドは演算子クラスで定義されており、「いいえ」を伝えることもできます。リストに存在する要素の数。ここでは、len() と length_hint() を使用してリストの長さを調べています。
Python3
from> operator> import> length_hint> # Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list using len()> list_len> => len> (test_list)> # Finding length of list using length_hint()> list_len_hint> => length_hint(test_list)> # Printing length of list> print> (> 'Length of list using len() is : '> +> str> (list_len))> print> (> 'Length of list using length_hint() is : '> +> str> (list_len_hint))> |
出力:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5
4. sum() 関数を使用してリストの長さを求める
合計内で反復を使用し、各反復で 1 を追加し、反復の最後にリストの全長を取得します。
Python3
# Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list> # using sum()> list_len> => sum> (> 1> for> i> in> test_list)> # Printing length of list> print> (> 'Length of list using len() is : '> +> str> (list_len))> print> (> 'Length of list using length_hint() is : '> +> str> (list_len))> |
出力:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5
5. リスト内包表記を使用してリストの長さを求める
というリストを初期化します。 テストリスト いくつかの値を使用して、length という変数を 0 に初期化します。リスト内包表記を使用して、test_list 内の各要素に対して 1 のシーケンスを生成します。
これにより、test_list と同じ長さのリストが作成されます。次に、 sum() 関数を使用して、 リストの内包表記 。合計を長さ変数に代入します。長さ変数を出力します。
Python3
# Define the list to be used for the demonstration> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Calculate the length of the list using a list comprehension and the sum function> # The list comprehension generates a sequence of ones for each element in the list> # The sum function then sums all the ones to give the length of the list> length> => sum> (> 1> for> _> in> test_list)> # Print the length of the list> print> (> 'Length of list using list comprehension is:'> , length)> |
出力
Length of list using list comprehension is: 5
時間計算量: リスト内包表記では、test_list の長さと同じ長さの新しいリストが作成されます。次に、 sum() 関数はこのリストを反復処理して合計を計算します。したがって、このアルゴリズムの時間計算量は O(N) です。ここで、N は test_list の長さです。
補助スペース: アルゴリズムは、リスト内包表記を使用して、test_list の長さと同じ長さの新しいリストを作成します。したがって、補助空間の複雑性も O(N) になります。ここで、N は test_list の長さです。
6. 再帰を使用してリストの長さを求める
を使用できます 再帰関数 それはリストを取る 最初の 入力としてそれ自体を再帰的に呼び出し、リストが空になるまで最初の要素を除外するリストのスライスを渡します。
基本的なケースはリストが空の場合で、この場合、関数は 0 を返します。それ以外の場合は、リストの残りの関数を呼び出した結果に 1 を追加します。
Python3
# Define a function to count the number of elements in a list using recursion> def> count_elements_recursion(lst):> > # Base case: if the list is empty, return 0> > if> not> lst:> > return> 0> > # Recursive case: add 1 to the count of the remaining elements in the list> > return> 1> +> count_elements_recursion(lst[> 1> :])> # Test the function with a sample list> lst> => [> 1> ,> 2> ,> 3> ,> 4> ,> 5> ]> print> (> 'The length of the list is:'> , count_elements_recursion(lst))> # Output: The length of the list is: 5> |
出力
The length of the list is: 5
時間計算量: O(n) ここで、n はリストの長さです。これは、関数が n 回の再帰呼び出しを行い、それぞれに O(1) 時間がかかり、再帰呼び出しの外側の各レベルでも O(1) の作業が行われるためです。
空間の複雑さ: O(n) ここで、n はリストの長さです。これは、関数が再帰呼び出しにより呼び出しスタックに n 個のスタック フレームを作成するためです。
7. enumerate() 関数を使用してリストの長さを求める
パイソン 列挙() メソッドはカウンターを反復可能オブジェクトに追加し、それを列挙オブジェクトの形式で返します。
Python3
# python code to find the length> # of list using enumerate function> list1> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> s> => 0> for> i, a> in> enumerate> (list1):> > s> +> => 1> print> (s)> |
出力
5
8. コレクションを使用してリストの長さを求める
あるいは、 和() 関数とその value() メソッド コレクション リストの長さを取得するカウンターオブジェクト。
Python3
from> collections> import> Counter> # Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Finding length of list using Counter()> list_len> => sum> (Counter(test_list).values())> print> (> 'Length of list using Counter() is:'> , list_len)> # This code is contributed by Edula Vinay Kumar Reddy> |
出力
Length of list using Counter() is: 5
時間計算量: O(n)。n はリストの長さです。これは、Counter() 関数が長さ n のリストに適用される場合の計算量は O(n) であり、values() メソッドと sum() 関数は両方とも適用される場合の時間計算量は O(n) であるためです。長さ n のリストに変換します。
空間の複雑さ: O(n) は、Counter() 関数として、n 個のキーと値のペアを含むディクショナリを作成します。各ペアは、リスト内の要素とその数をそれぞれ表します。この辞書は O(n) スペースを占有します。
パフォーマンス分析: ナイーブ vs Python len() vs Python length_hint()
選択肢の中から選択する場合は、他の選択肢ではなく 1 つを選択する正当な理由が常に必要です。このセクションでは、使用するより良い選択肢を提供するために、すべての実行にかかる時間を分析します。
Python3
from> operator> import> length_hint> import> time> # Initializing list> test_list> => [> 1> ,> 4> ,> 5> ,> 7> ,> 8> ]> # Printing test_list> print> (> 'The list is : '> +> str> (test_list))> # Finding length of list> # using loop> # Initializing counter> start_time_naive> => time.time()> counter> => 0> for> i> in> test_list:> > # incrementing counter> > counter> => counter> +> 1> end_time_naive> => str> (time.time()> -> start_time_naive)> # Finding length of list> # using len()> start_time_len> => time.time()> list_len> => len> (test_list)> end_time_len> => str> (time.time()> -> start_time_len)> # Finding length of list> # using length_hint()> start_time_hint> => time.time()> list_len_hint> => length_hint(test_list)> end_time_hint> => str> (time.time()> -> start_time_hint)> # Printing Times of each> print> (> 'Time taken using naive method is : '> +> end_time_naive)> print> (> 'Time taken using len() is : '> +> end_time_len)> print> (> 'Time taken using length_hint() is : '> +> end_time_hint)> |
出力:
The list is : [1, 4, 5, 7, 8] Time taken using naive method is : 2.6226043701171875e-06 Time taken using len() is : 1.1920928955078125e-06 Time taken using length_hint() is : 1.430511474609375e-06
下の画像では、かかった時間が明らかにわかります。 ナイーブ>> length_hint()> len() ただし、かかる時間は OS とそのパラメータのいくつかに大きく依存します。
2 回連続して実行すると、対照的な結果が得られる場合があります。実際、3 回のうちナイーブの方が時間が最も短い場合があります。可能な 6 つの順列はすべて可能です。
ナイーブ> len()> length_hint()
ナイーブ> len()=length_hint()
ナイーブ> length_hint()>len()
ナイーブ> length_hint()> len()
Python でリストの長さを見つけるための 8 つの異なる方法について説明しました。また、どの方法が最適であるかを確認するためにパフォーマンス分析も行いました。
上記のいずれかの方法を使用して、リストの長さを確認できます。リストの長さを調べることは、巨大なリストを処理し、エントリの数を確認したい場合に非常に役立ちます。
その他の Python リスト ページをチェックしてください:
- Python リストメソッド
- Python リストの演習
- Python のリスト操作の空間複雑さ