Pythonで空のリストを効率的に作成する方法を学びたい方は、この記事を参考にしてください。
You will learn:
- 角括弧を使って空のリストを作成する方法
.
-
list()
. - その使用例。
- その効率の良さ(どちらかが速い!)。
timeit
モジュールを使って比較します。
さあ、始めましょう! ✨
🔹角括弧の使い方
以下のように、空の角括弧のペアで空のリストを作ることができます。
💡 ヒント。 空のリストを変数に代入して、プログラムの中で後で使うようにします。
例:
num =
空のリストの長さは0
となり、このようになります。
>>> num = >>> len(num)0
空のリストはファルシー値であり、ブーリアンのコンテキストでは False
と評価されることを意味します。
>>> num = >>> bool(num)False
空のリストに要素を追加する
メソッド append()
insert()
を使用して、空のリストに要素を追加することができます。
-
append()
は、要素をリストの最後に追加します。 -
insert()
は、選択したリストの特定のインデックスに要素を追加します。
リストは、評価されるときに空であるかどうかによって、真実の値でも仮の値でもあるので、次のような条件式で使用することができます。
if num:print("This list is not empty")else:print("This list is empty")
このコードの出力は次のようになります。
This list is empty
リストが空だったため、Falseと評価されます。
一般的には、
- リストが空でない場合、
True
と評価されるので、if節が実行されます。 - リストが空の場合、
False
と評価されるので、else節が実行されます。
Example:
以下の例では、空のリストを作成し、それを変数 num
に代入します。
>>> num = >>> for i in range(3, 15, 2):num.append(i)
アイテムが正常に追加されたかどうかを確認するために変数の値をチェックし、リストが空でなくなったことを確認します。
>>> num
💡 ヒント。 空のリストに最初の要素を追加するには、一般的にappend()
0
insert()
メソッドを呼び出して、この要素を追加することもできます。
>>> num = >>> num.insert(0, 1.5) # add the float 1.5 at index 0>>> num
🔸 list()コンストラクタの使用
代わりに、型コンストラクタ list()
で空のリストを作成し、新しいリストオブジェクトを作成することができます。
Pythonのドキュメントによると、
💡 ヒントです。 これはメモリ上に新しいリストオブジェクトを作成するもので、list()
には何も引数を渡していないので、空のリストが作成されます。
例:
num = list()
この空のリストの長さは、0
となりますが、ここを見ればわかります。
>>> num = list()>>> len(num)0
そして、空の場合はファルシーな値になります (ブーリアン コンテキストでは False
と評価されます):
>>> num = list()>>> bool(num)False
例を示します。
これは完全に機能するリストなので、要素を追加することができます:
>>> num = list()>>> for i in range(3, 15, 2):num.append(i)
そして結果は、ここで見られるように、空ではないリストになります。
>>> num
🔹使用例
- 通常、文字列、辞書、タプルなどの既存の反復可能なものからリストを作成するために
list()
を使用します。 - Pythonで空のリストを作るのに角括弧
が使われているのをよく見かけますが、この構文はより簡潔で高速だからです。
🔸効率
待って!list()
よりも速いと言いましたが、
でもどのくらい速いのでしょうか?
timeitモジュールを使って、それぞれの時間効率をチェックしてみましょう。
Pythonプログラムでこのモジュールを使用するには、次のようにインポートする必要があります。
>>> import timeit
具体的には、このモジュールのtimeit関数を使用し、次の構文で呼び出すことができます。
💡 ヒント。 コードを数回繰り返すことで、その瞬間に実行されている他のプロセスなどの外的要因によって生じる時間差を少なくしています。
🚦 On your marks…get set…ready!
まず、モジュールをインポートします。
>>> import timeit
続いて、各構文のテストを開始します。
Testing :
>>> timeit.timeit('', number=10**4)0.0008467000000109692
Testing list():
>>> timeit.timeit('list()', number=10**4)0.002867799999989984
💡 ヒント。 時間を計測したいコードは、シングルクォート ''
""
timeit
の関数が返す時間は秒で表されます。
以下の結果を比較してみてください:
-
0.0008467000000109692
-
list()
0.002867799999989984
list()
0.002
秒の差がありました:
>>> 0.002867799999989984 - 0.00084670000001096920.0020210999999790147
きっと今、こんなことを聞いているに違いありません。 全く同じことをしているのに、なぜ list()
よりも効率が悪いのでしょうか?
さて…。 list()
は、メモリ上にリストを作成するために、それほど多くの中間ステップを必要としない「ショートカット」のようなものです。
この時間差は、プログラムのパフォーマンスにはあまり影響しませんが、どちらがより効率的であるか、また、裏でどのように動作しているかを知っておくといいでしょう。
🔹 まとめ
空の角括弧のペア list()
(引数が渡されないときに空のリストを作成する組み込み関数)を使用して、空のリストを作成することができます。
角括弧 は、Pythonで空のリストを作成する際によく使われますが、それはより速く、より簡潔だからです。 これで、あなたのPythonプロジェクトで空のリストを作成できるようになりました。 私のオンラインコースをご覧ください。 Twitterで私をフォローしてください。 ⭐️
リストについてもっと深く知りたい方は、以下の記事を読んでみてください。
- Python List Append – 配列に要素を追加する方法を例を挙げて説明
- Python Sort List Array Method – Ascending と Descending を例を挙げて説明
- Python List Append VS Python List Extend – The Difference Explained with Array Method Examples