まず結論
append() は、リストに要素を追加します。
ただし、追加後のリストを返すわけではありません。
items = ["りんご"]
result = items.append("みかん")
print(items)
print(result)
表示は次のようになります。
['りんご', 'みかん']
None
読む目安
次のようなコードで困った人向けです。
items = []
items = items.append("りんご")
print(items)
items にリストが入っているつもりなのに、None になってしまうことがあります。
イメージで考える
append() は、新しいリストを手渡すのではなく、今あるリストの棚に直接追加する動きです。
追加されたものは、元の items の中に入ります。
戻り値の受け取り箱には何も返ってこないので、そこを見ると None になります。
appendはその場で変える
append() は、元のリストをその場で変更します。
items = []
items.append("りんご")
items.append("みかん")
print(items)
このように、items = items.append(...) と書く必要はありません。
なぜNoneになる?
append() の戻り値が None だからです。
items = []
result = items.append("りんご")
print(result)
append() は「追加作業をした」だけで、結果として新しいリストを返しません。
正しい書き方
リストに追加したいだけなら、次の形にします。
items = []
items.append("りんご")
print(items)
items 自体が変更されるので、最後に items を見れば追加済みです。
似たつまずき
sort() でも同じようなことが起きます。
numbers = [3, 1, 2]
result = numbers.sort()
print(numbers)
print(result)
numbers は並び替わりますが、result は None です。
読み方のコツ
append() や sort() は、「元のリストを直接変える操作」と考えます。
戻り値を変数に入れるより、操作したあとの元のリストを見るのが基本です。
手を動かすミニ練習
append() の結果を変数に入れた場合と、元のリストを表示した場合を比べましょう。
numbers = [1, 2]
result = numbers.append(3)
print(result)
print(numbers)
append() は元のリストを変えるので、result ではなく numbers を見ます。
3行まとめ
- appendはリストに要素を追加するメソッド。
- appendの戻り値はNone。
- 追加後のリストを使いたいなら、元のリストをそのまま見る。