logo

Python でリストを初期化するには?

Python オブジェクトは、Python リスト内の順序付けされた値のグループに含めることができます。リストは Python の変更可能なデータ構造であるため、このコンテナー内の既存の値を追加、削除、または変更できます。セットとは対照的に、リストでは同じ値の多数のインスタンスが許可され、それぞれが異なる項目として扱われます。このチュートリアルでは、Python でリスト オブジェクトを初期化する方法を学びます。

角括弧を使用してリストを初期化する

値のない空のリストを Python で構築したい場合、角括弧を使用することは、値のないリストを初期化する 1 つの方法です。リストを初期化するには、項目値の有無にかかわらず、角かっこのペアを指定するだけです。

ネットワークとインターネット

コード

 # Python program to show how to initialize a list using square brackets # Initializing an empty list list_ = [] print('An empty list: ', list_) # Initializing a list with some values list_ = [1, 3, 5, 7] print('A non-Empty list: ', list_) 

出力:

 An empty list: [] A non-Empty list: [1, 3, 5, 7] 

組み込み list() 関数を使用してリストを初期化する

Python の list() 関数は、反復可能なオブジェクトであるリストを構築します。したがって、これは、このコーディング言語でデータを含まない空の Python リストを作成するもう 1 つの方法です。

イテレータ オブジェクト、反復を可能にするシーケンス、コンテナはすべて反復可能です。入力が与えられない場合、新しい空のリストが構築されます。

コード

 # Python program to show how to initialize a list using the built-in list function # Initializing an empty list list_ = list() print('An empty list: ', list_) # Initializing a non-empty list list_ = list([1, 2, 3]) print('A non-empty list: ', list_) 

出力:

 An empty list: [] A non-empty list: [1, 2, 3] 

角括弧の方法は、組み込みの list() 関数よりも明確でわかりやすいため、好まれます。

リスト内包表記を使用したリストの初期化

リスト内包アプローチを使用して、リストのデフォルトパラメータを設定できます。これは、角括弧で囲まれた式、for ステートメント、および後に続く場合とそうでない場合があるオプションの if ステートメントで構成されます。リストに追加したい項目はすべて式として記述することができます。ユーザーがリストをゼロで初期化した場合、式は 0 になります。

リスト理解は、反復子を前提としたリストを構築するための洗練された簡単なよく知られたアプローチです。

コード

 # Python program to show how to initialize a list using list comprehension # Initializing a list list_ = [item for item in range(10)] print('The list was created using list comprehension: ', list_) 

出力:

Javaにいる間に行う
 The list was created using list comprehension: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

この手法では、Python の for ループや while ループよりもはるかに高速にリストを初期化します。

* 演算子を使用して Python リストを初期化する

Python でリストを初期化するもう 1 つの方法は、* 演算子を使用することです。複数の値を含むリストを作成します。この演算子を使用する構文は [要素] * n です。ここで、n はリスト内の要素を繰り返す回数です。

2対1マルチプレクサ

このメソッドは、事前定義された長さのリストを初期化する場合に役立ちます。

コード

 # Python program to show how to use the * operator to initialize a list list_ = [5]*10 print (list) 

出力:

 [5, 5, 5, 5, 5, 5, 5, 5, 5] 

この方法は非常に効率的であり、リストを作成する最速の方法です。このチュートリアルの後半で、各メソッドにかかる時間を比較します。

この演算子を使用して Python リストを初期化する唯一の欠点は、2D リストを作成する必要がある場合です。このメソッドは浅いリストのみを作成します。つまり、単一のリスト オブジェクトを作成し、すべてのインデックスがこれを参照するためです。非常に不便になるオブジェクト。 2D リストを作成する必要がある場合にリスト内包表記を使用するのはこのためです。

for ループと append() の使用

空のリストを作成し、for ループを実行して、リストの append() 関数を使用して項目を追加します。

コード

 # Python program to show how to use a for loop to initialize a list arr = [] for i in range(1000): arr.append(0) 

While ループを使用してリストを初期化する

for ループを使用してリストを初期化するのと同じように、while ループを使用できます。

コード

 # Python program to initialize a list using a while loop # Creating an empty list array = [] # Declaring counter variables i = 0 # Starting a while loop while(i <10): array.append(0) i +="1" print(array) < pre> <p> <strong>Output:</strong> </p> <pre> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] </pre> <h2>Time Complexity</h2> <p>Let us now see how long each of the described approaches will take. We will initialize a list of 100000 elements 1000 times. We will calculate the average time each method takes to perform this task.</p> <p> <strong>Code</strong> </p> <pre> # Python program to see the time taken by various methods to initialize a list # importing the time module to calculate the time taken by a chunk of code import time # initializing the lists for various methods forLoop = [] whileLoop = [] listComprehension = [] starOperator = [] # repeating the process of generating a list of 100000 elements 500 times # Then calculate the average time taken by the methods for i in range(1000): # starting time of the execution begin = time.time() # declaring an empty list list_ = [] # running a for loop and iterating it 100000 times for i in range(100000): list_.append(0) # stoping time of the execution end = time.time() forLoop.append(end - begin) # starting time of the execution begin = time.time() # declaring an empty list list_ = [] i = 0 # COunter variable # running a while loop and iterating it 100000 times while i <100000: 100000 list_.append(0) i +="1" end="time.time()" whileloop.append(end - begin) begin="time.time()" # using a list comprehension to initialize the for in range(100000)] listcomprehension.append(end astrick (*) operator * staroperator.append(end print('the average execution time of loop is: ', sum(forloop) 1000) while sum(whileloop) sum(listcomprehension) taken operator: sum(staroperator) < pre> <p> <strong>Output:</strong> </p> <pre> The average execution time of for loop is: 0.01166958212852478 The average execution time of the while loop is: 0.01916465663909912 The average execution time of list comprehension is: 0.005084690093994141 The average execution time was taken of * operator: 0.00028331947326660156 </pre> <p>We can see that for and while loops take almost the same execution time. However, for loop is a little better than the while loop.</p> <p>List comprehension shows much better performance than the for and while loops. It is 2-3 times faster than the loops. Thus, list comprehension is much more efficient than the append() function of the lists.</p> <p>The * operator has shown the best performance out of all the four methods.</p> <hr></100000:></pre></10):>

時間計算量

ここで、説明した各アプローチにどれくらいの時間がかかるかを見てみましょう。 100000 要素のリストを 1000 回初期化します。このタスクの実行に各メソッドがかかる平均時間を計算します。

ミニツールバーエクセル

コード

 # Python program to see the time taken by various methods to initialize a list # importing the time module to calculate the time taken by a chunk of code import time # initializing the lists for various methods forLoop = [] whileLoop = [] listComprehension = [] starOperator = [] # repeating the process of generating a list of 100000 elements 500 times # Then calculate the average time taken by the methods for i in range(1000): # starting time of the execution begin = time.time() # declaring an empty list list_ = [] # running a for loop and iterating it 100000 times for i in range(100000): list_.append(0) # stoping time of the execution end = time.time() forLoop.append(end - begin) # starting time of the execution begin = time.time() # declaring an empty list list_ = [] i = 0 # COunter variable # running a while loop and iterating it 100000 times while i <100000: 100000 list_.append(0) i +="1" end="time.time()" whileloop.append(end - begin) begin="time.time()" # using a list comprehension to initialize the for in range(100000)] listcomprehension.append(end astrick (*) operator * staroperator.append(end print(\'the average execution time of loop is: \', sum(forloop) 1000) while sum(whileloop) sum(listcomprehension) taken operator: sum(staroperator) < pre> <p> <strong>Output:</strong> </p> <pre> The average execution time of for loop is: 0.01166958212852478 The average execution time of the while loop is: 0.01916465663909912 The average execution time of list comprehension is: 0.005084690093994141 The average execution time was taken of * operator: 0.00028331947326660156 </pre> <p>We can see that for and while loops take almost the same execution time. However, for loop is a little better than the while loop.</p> <p>List comprehension shows much better performance than the for and while loops. It is 2-3 times faster than the loops. Thus, list comprehension is much more efficient than the append() function of the lists.</p> <p>The * operator has shown the best performance out of all the four methods.</p> <hr></100000:>

for ループと while ループの実行時間はほぼ同じであることがわかります。ただし、for ループは while ループよりも少し優れています。

リストの内包は、for ループや while ループよりもはるかに優れたパフォーマンスを示します。ループよりも 2 ~ 3 倍高速です。したがって、リストの内包は、リストの append() 関数よりもはるかに効率的です。

* 演算子は、4 つの方法すべての中で最高のパフォーマンスを示しました。