Python、機械学習

【Python】リスト、辞書、タプル、Series、Numpyそれぞれの要素追加方法

わかったつもりでも、いざ自分でコードを書き始めるとつまずきがちなのが「追加」の方法です。

私も「追加」のコードが間違っていたがために何度もエラーを起こしました。

しかも、そこが間違っていることになかなか気づけず・・・。

ということで、ここではPythonの各オブジェクトに要素を追加する方法の違いをまとめます。

リストの場合

リストだと、appendメソッドを使って要素を追加します。要素はリストの一番後ろに追加されます。

sushi = ['いくら', 'えんがわ', 'つぶ貝']

sushi.append('うに')

[‘いくら’, ‘えんがわ’, ‘つぶ貝’, ‘うに’]

位置を指定して追加したい場合は、appendではなくinsertメソッドを使います。

挿入する位置、要素の順で指定します。

sushi = ['いくら','えんがわ','つぶ貝']

list.insert(0,'うに')

[‘うに’, ‘いくら’, ‘えんがわ’, ‘つぶ貝’]

リストへの追加のポイント

ポイントは2つです。これ重要です。

・sushi = sushi.append(〇〇) や sushi = sushi.insert(△、〇〇) のように上書きしなくていい。

sushi[3] = ‘うに’ という方法では追加できない。

辞書の場合

辞書の場合はこのように書きます。updateメソッドを使います。

sushi = {'いくら': 1,'えんがわ': 3,'つぶ貝': 2}

sushi.update({'うに': 0})

sushi

{‘いくら’: 1, ‘えんがわ’ 3, ‘つぶ貝’: 2, ‘うに’: 0}

辞書の場合は、このような書き方もできます。

sushi = {'いくら': 1,'えんがわ': 3,'つぶ貝': 2}

sushi['うに'] = 0

sushi

{‘いくら’: 1, ‘えんがわ’ 3, ‘つぶ貝’: 2, ‘うに’: 0}

なお、辞書には順番という概念がありませんので、位置を指定した挿入方法はありません。

辞書への追加のポイント

ポイントをまとめます。

・sushi = sushi.update(〇〇)  のように上書きしなくていい。

sushi[‘うに’] = 0 という方法で追加できる。

タプルの場合

タプルの場合は、このように追加できます。

sushi = ('いくら','えんがわ','つぶ貝')

sushi = sushi + ('うに',)

sushi

( ‘いくら’, ‘えんがわ’, ‘つぶ貝’, ‘うに’ )

sushiに新しい要素を足して、上書きする方法です。

タプルの要素が1個だけの場合は、(‘うに’) ではなくカンマを入れて(‘うに’, ) とします。カンマがないとエラーとなります。

追加できる箇所は、一番前か一番後ろだけのようです。

タプルへの追加のポイント

・sushi = sushi + (‘〇〇’, ) のようにして上書きしなければならない。

pd.Seriesの場合

pandasのSeriesの場合、このようにして要素を追加できます。

sushi = pd.Series({'いくら': 1,'えんがわ': 3,'つぶ貝': 2})

sushi['うに'] = 0

sushi

いくら 1
えんがわ 3
つぶ貝 2
うに 0
dtype: int64

辞書と同じやり方ですね。

余談ですが、辞書からSeriesを作ると順番がバラバラになります(今回は発生していませんが)。順番を固定してSeriesを作る場合は次のようにします。

sushi = pd.Series([1, 3, 2], index = ['いくら', 'えんがわ','つぶ貝'])

pd.Seriesへの追加のポイント

ポイントをまとめます。

sushi[‘うに’] = 0 という方法で追加できる。

np.arrayの場合

numpyのarrayの場合は、np.insertメソッドを使います。

sushi = np.array(['いくら', 'えんがわ','つぶ貝'])

sushi = np.insert(sushi, 0, ['うに'])

sushi

array( [‘うに’, ‘いくら’, ‘えんがわ’,’つぶ貝’] )

挿入する位置、要素の順で指定します。それをsushiに上書きする形にします。

np.arrayへの追加のポイント

ポイントをまとめます。

・sushi = np.insert(sushi, △, [‘〇〇’]) のようにして上書きしなければならない。

sushi[3] = ‘うに’ という方法では追加できない。

まとめ

以上が、各オブジェクトに要素を追加する方法です。ここはコードを書いているときによく間違えるところですので、エラーが起きたときは疑うようにしてみてください。