多くの Python のリスト メソッドはその場で動作し、返されますNone
(頭のてっぺんから、insert
、sort
、reverse
)。
ただし、よくイライラする動作が 1 つあります。通常はオブジェクトを返す新しいリストを作成し、同時に挿入すると、新しいリストは「消えます」:
mytup = (0, 1, 2, 3, 4)
print mytup # (0, 1, 2, 3, 4)
mylist = list(mytup)
print mylist # [0, 1, 2, 3, 4]
newlist = list(mytup).insert(0, 10)
print newlist # None
したがって、タプルを変更したい場合は、さらに行が必要です。
newlist = list(mytup)
newlist.insert(0, 10)
print newlist # [10, 0, 1, 2, 3, 4]
だから私は2つの質問があります:
- リストコンストラクターを呼び出すとオブジェクトが返されますが、メソッドを使用してリストコンストラクターを呼び出すと、メソッドは戻り値を「オーバーライド」するというのは正しい
None
ですか? 繰り返しますが、リストはどこに行くのでしょうか? - タプルに挿入して 1 行でリストを返す方法はありますか? コードゴルフをしようとしているわけではありません.2つの行が論理的に異なるため、分離する価値があるとは思いません。