私はこのようなことをしたい:
myList = [10, 20, 30]
yourList = myList.append(40)
残念ながら、listappendは変更されたリストを返しません。
では、どうすればappend新しいリストを返すことができますか?
回答:
追加ではなく連結を使用してください。
yourList = myList + [40]
これにより、新しいリストが返されます。myList影響を受けません。あなたがしている必要がある場合にmyList影響を受けるだけでなく使用するか.append()、いずれにせよ、その後割り当てるyourList(のコピー)とは別にmyList。
list.appendはコマンドであり、クエリではありません。
                    Python 3では、古いリストを解凍して新しい要素を追加することで、新しいリストを作成できます。
a = [1,2,3]
b = [*a,4] # b = [1,2,3,4] 
あなたがするとき:
myList + [40]
実際には3つのリストがあります。
list.appendは組み込みであるため、変更できません。ただし、以外のものを使用する場合はappend、次のことを試してください+。
In [106]: myList = [10,20,30]
In [107]: yourList = myList + [40]
In [108]: print myList
[10, 20, 30]
In [109]: print yourList
[10, 20, 30, 40]
もちろん、これの欠点は、新しいリストが作成されることです。これには、よりもはるかに時間がかかります。 append
お役に立てれば
組み込みリストタイプをサブクラス化し、「append」メソッドを再定義できます。またはさらに良いことに、あなたがやりたいことをする新しいものを作成してください。以下は、再定義された「append」メソッドのコードです。
#!/usr/bin/env python
class MyList(list):
  def append(self, element):
    return MyList(self + [element])
def main():
  l = MyList()
  l1 = l.append(1)
  l2 = l1.append(2)
  l3 = l2.append(3)
  print "Original list: %s, type %s" % (l, l.__class__.__name__)
  print "List 1: %s, type %s" % (l1, l1.__class__.__name__)
  print "List 2: %s, type %s" % (l2, l2.__class__.__name__)
  print "List 3: %s, type %s" % (l3, l3.__class__.__name__)
if __name__ == '__main__':
  main()
お役に立てば幸いです。
Storstampの答えを拡張するためだけに
myList.append(40)を実行するだけで済みます
元のリストに追加されます。これで、元のリストを含む変数を返すことができます。
非常に大きなリストで作業している場合は、これが最適な方法です。
append()戻る理由は何Noneでしたか?どの禅の原則に違反しますか?