まず結論
append() は、リストに要素を追加します。
ただし、追加後のリストを返すわけではありません。
items = ["りんご"]
result = items.append("みかん")
print(items)
print(result)
表示は次のようになります。
['りんご', 'みかん']
None
こんなときに読む記事です
次のようなコードで困った人向けです。
items = []
items = items.append("りんご")
print(items)
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() は、「元のリストを直接変える操作」と考えます。
戻り値を変数に入れるより、操作したあとの元のリストを見るのが基本です。
3行まとめ
- appendはリストに要素を追加するメソッド。
- appendの戻り値はNone。
- 追加後のリストを使いたいなら、元のリストをそのまま見る。