ホームページ >バックエンド開発 >Python チュートリアル >Pythonでリストを初期化するにはどうすればよいですか?
Python は非常に柔軟な言語であり、単一のタスクをさまざまな方法で実行できます。たとえば、初期化リストはさまざまな方法で実行できます。次の記事では、いくつかの Python の初期化方法を紹介し、それらの方法の効率を比較します。
#次に、Python でリストを初期化するいくつかの方法を紹介します (サイズ 1000 のリストを作成し、それをゼロで初期化します)。
方法 1: for ループと append() を使用する
空のリストを作成し、append() メソッドを使用してfor を n 回ループしてリストに要素を追加します。
arr = [] for i in range(1000): arr.append(0)
方法 2: カウンタ変数と append() を指定した while ループを使用する
これは方法 1 と多少似ていますが、 for ループの代わりに while ループを使用します。
arr = [] i = 0 while(i<1000): arr.append(0)
方法 3: リスト内包表記を使用する
リスト内包表記は、数学者がよく知られた表記法を実装するために使用する方法です。 。これは、式を含む角括弧、その後に続く for 節、その後に続くオプションの if 節で構成されます。
式には、リストに含める任意のタイプのオブジェクトを指定できます。リストを 0 で初期化したため、式は 0 のみになります。
arr = [0 for i in range(1000)]
注: リスト導出は効率的なコードを作成するために使用でき、その実行速度は for ループより 35% 高速です。
方法 4: * 演算子を使用します。
演算子は [object] * n として使用できます。n は要素の数です。配列内で 。
arr = [0]*1000
コードの実行時間の比較
これら 4 つのメソッドの実行時間を見て、どちらのメソッドが速いかを見てみましょう。
例: 10,000 要素の配列を 500 回初期化するのに各メソッドがかかる平均時間を計算します。
# 导入时间模块以计算时间 import time # 初始化列表以保存时间 forLoopTime = [] whileLoopTime = [] listComprehensionTime = [] starOperatorTime = [] # 重复此过程500次,并计算所用的平均时间。 for k in range(500): # 开始时间 start = time.time() # 声明空列表 a = [] # 执行for循环10000次 for i in range(10000): a.append(0) # 停止时间 stop = time.time() forLoopTime.append(stop-start) # 开始时间 start = time.time() # 声明空列表 a = [] i = 0 # 执行while循环10000次 while(i<10000): a.append(0) i+= 1 stop = time.time() whileLoopTime.append(stop-start) start = time.time() # 使用列表推导(List Comprehension) 来初始化列表 a = [0 for i in range(10000)] stop = time.time() listComprehensionTime.append(stop-start) start = time.time() # 使用*运算符 a = [0]*10000 stop = time.time() starOperatorTime.append(stop-start) print("for循环所用的平均时间:" + str(sum(forLoopTime)/100)) print("while循环所用的平均时间:" + str(sum(whileLoopTime)/100)) print("列表推导所用的平均时间:" + str(sum(listComprehensionTime)/100)) print("* 运算符所用的平均时间: " + str(sum(starOperatorTime)/100))
出力:
注: 時間は、このコードが実行されるプラットフォームによって異なります。これらの時間は、これらの初期化メソッドの相対的なパフォーマンスを調査するためにのみ使用されます。
# for ループと while ループにかかる時間はほぼ同じであることがわかります。
# リスト理解のパフォーマンスは for ループや while ループよりもはるかに優れており、前者の方が 3 ~ 5 倍高速です。この違いのもう 1 つの例は、1 から 1000 までの数値のリストを作成しようとしたときに見ることができます。リスト内包表記を使用することは、append() を使用するよりもはるかに優れています。
a = [i for i in range(1,1001)]
# * 演算子を使用すると、他の演算子よりも高速にリストを初期化できます。
関連ビデオ チュートリアルの推奨事項: "Python チュートリアル "
以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !
以上がPythonでリストを初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。