Developer

【Python独学】リストに要素を追加する/リストの要素を削除する
2020.11.02
Lv1

【Python独学】リストに要素を追加する/リストの要素を削除する

今回は既に作成してあるリストに対し、

  • 要素を追加する
  • 要素を削除する

を行う方法を記載していきます。


要素を追加する

要素を追加する方法は大きく分けて2通りあります。

  • 末尾に追加する
  • 位置を指定して追加する

それでは順番に見ていきましょう。


○末尾に追加する

末尾に追加するにはappend()関数を使用します。
リスト.append(追加したい値)
のように記述するだけでOKです。

schools = ["幼稚園", "小学校", "中学校"]
print(schools)

schools.append("大学")
print(schools)

schools.append("大学院")
print(schools)
C:\Python> python list_append.py

[‘幼稚園’, ‘小学校’, ‘中学校’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]

この様にappend()で指定した要素は末尾に追加されていきます。


○位置を指定して追加する

先程のリストでは高校が抜けていたので追加してみましょう。
リストの途中に追加したい場合はinsert()を使用します。
リスト.insert(追加したい位置, 値)
と記述します。
先程のappend()と異なり追加したい位置を引数として渡す必要があります。

schools = ["幼稚園", "小学校", "中学校", "大学", "大学院"]
print(schools)

schools.insert(3, "高校")
print(schools)
C:\Python> python list_insert.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘高校’, ‘大学’, ‘大学院’]

上記の様にリストの途中に要素が追加できました。
このとき、追加したい位置0番目から数えるということに注意しましょう。


要素を削除する

要素を削除する方法は大きく分けて4通りあります。

  • 末尾の要素を削除する
  • インデックスを指定し削除する①
  • インデックスを指定し削除する②
  • 要素を指定して削除する

それではこちらも順番に見ていきましょう。


○末尾の要素を削除する

末尾を削除するにはpop()を使用します。

schools = ["幼稚園", "小学校", "中学校", "大学", "大学院"]
print(schools)

schools.pop()
print(schools)
C:\Python> python list_pop1.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’]

上記のように末尾の要素がなくなっていることが分かると思います。

ただし、この動きはpop()の全てでは無いのです。
pop()の正しい動作は「リストの末尾の要素を削除し、削除した要素を返す」というものです。
先程紹介したのはこの動作の前半部分のみということです。
「要素を返すってどういうこと?」となっているのが目に浮かびます。
関数の動作に関しては別記事で記載しますのでしばしお待ちを。。。

まずは簡単な例を記載します。

schools = ["幼稚園", "小学校", "中学校", "大学", "大学院"]
print(schools)

delete_element = schools.pop() #「削除した要素を返す」で返ってくるものを変数に格納
print(schools)                 #リストからは末尾の要素が削除されていて。。。。
print(delete_element)          #変数には削除された要素が格納されています。
C:\Python> python list_pop2.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’]
大学院

delete_elementにpop()から返ってきた要素を格納することで、後々使用することができます。
今は関数によって返されたものは変数に格納することができるくらいに覚えておいてください。

ちなみに。。。。

schools = ["幼稚園", "小学校", "中学校", "大学", "大学院"]
print(schools)

delete_element1 = schools.pop() 
print(schools)
print(delete_element1)

delete_element2 = schools.pop() 
print(schools)
print(delete_element2)
C:\Python> python list_pop3.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’]
大学院
[‘幼稚園’, ‘小学校’, ‘中学校’]
大学

pop()は実行するたびに末尾を削除していきますので、
pop()から返ってくる値は毎回異なります。
※リスト内に同じ要素が複数入っている場合を除く。


○インデックスを指定し削除する①

pop()の応用です。
先程はpop()に引数を渡さずに実行していましたが、ここに引数を渡すだけです。
※引数に関しては別記事にて記載しますので今は()の中にインデックスを指定するんだなとおぼえておいてください。

schools = ["幼稚園", "小学校", "中学校", "大学", "大学院"]
print(schools)

schools.pop(1)#()の中に削除したいインデックスを指定する
print(schools)
C:\Python> python list_pop4.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘中学校’, ‘大学’, ‘大学院’]

インデックスが1の”小学校”がリストから削除されました。
pop()の動作に関しては↑で説明した引数を指定しない場合と同じです。


○インデックスを指定し削除する②

del文を使う方法です。
pop()とは異なり削除した要素は返ってきません。

schools = ["幼稚園", "小学校", "中学校", "高校", "大学", "大学院"]
print(schools) 

del schools[4]
print(schools)
C:\Python> python list_del.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘高校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘高校’, ‘大学院’]

pop()に引数を指定した場合と同様の動作をします。


○要素を指定して削除する

要素を指定して削除するにはremove()関数を使用します。
インデックスが不明な場合や、要素を指定したい場合に使用します。

schools = ["幼稚園", "小学校", "中学校", "高校", "大学", "大学院"]
print(schools)

schools.remove("高校")
print(schools)
C:\Python> python list_remove1.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘高校’, ‘大学’, ‘大学院’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’]

この様に引数に指定した要素を削除することができます。
ただし、使用には注意が必要です。

schools = ["幼稚園", "小学校", "中学校", "高校", "大学", "大学院", "高校"]
print(schools) 

schools.remove("高校") #リストの最後に誤って"高校"が入っているから削除しようとこんなふうに書いてしまうと
print(schools)         #3番目の"高校"が消えてしまいました。。。。
C:\Python> python list_remove2.py

[‘幼稚園’, ‘小学校’, ‘中学校’, ‘高校’, ‘大学’, ‘大学院’, ‘高校’]
[‘幼稚園’, ‘小学校’, ‘中学校’, ‘大学’, ‘大学院’, ‘高校’]

この様に一致する要素が複数あった場合、先に一致した要素を削除するという動きになります。


まとめ

要素を追加する方法は2つ!
 ・末尾に追加するappend()
 ・位置を指定するinsert()

要素を削除する方法は4つ!
 ・末尾を削除するpop()
 ・インデックスを指定して削除するpop(インデックス番号)
 ・インデックスを指定して削除するdel文
 ・要素を指定して削除するremove()


確認問題

1.和暦を完成させよう!
 

wareki = [“明治”, “昭和”, “平成”]

 このwarekiに”大正”、”令和”を加えて表示させましょう。
 ※真ん中と末尾に加えることに注目。

2.国連安保理常任理事国を完成させよう!
 

riji = [“アメリカ”, “フランス”, “イギリス”, “チュニジア”, “ロシア”, “中国”, “日本”]

 このrijiには常任理事国以外が紛れ込んでいるので、正しい常任理事国に直してみよう!

連載目次

独学で学ぶ Pythonプログラミング 連載目次