1. ホーム
  2. python

[解決済み] Pythonで一定の大きさの空リストを作成する

2022-03-14 20:45:50

質問

10個の要素を格納できる空リスト(何でも良い)を作りたいのですが、どうすれば良いですか?

その後、そのリストに値を割り当てたいのですが、例えば、これは0から9を表示することになっています。

s1 = list();
for i in range(0,9):
   s1[i] = i

print s1

しかし、このコードを実行すると、エラーが発生したり、別のケースでは、ただ単に [] (空)です。

どなたか理由を説明してください。

解決方法は?

のようなリストへの代入はできません。 lst[i] = something で初期化されていない限り、そのリストは少なくとも i+1 要素で構成されています。リストの末尾に要素を追加するには、appendを使用する必要があります。 lst.append(something) .

(辞書を使うなら代入記法も使える)。

空のリストを作成する。

>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]

上記リストの既存要素に値を代入する。

>>> l[1] = 5
>>> l
[None, 5, None, None, None, None, None, None, None, None]

のようなものがあることに留意してください。 l[15] = 5 のように、10個の要素しかないリストでは、やはり失敗します。

range(x) は [0, 1, 2, ... x-1] からリストを作成します。

# 2.X only. Use list(range(10)) in 3.X.
>>> l = range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

関数を使用してリストを作成する。

>>> def display():
...     s1 = []
...     for i in range(9): # This is just to tell you how to create a list.
...         s1.append(i)
...     return s1
... 
>>> print display()
[0, 1, 2, 3, 4, 5, 6, 7, 8]

リスト内包(四角を使うのは、範囲指定ではこんなことする必要がないから。 range(0,9) ):

>>> def display():
...     return [x**2 for x in range(9)]
... 
>>> print display()
[0, 1, 4, 9, 16, 25, 36, 49, 64]