《29》連結:メソッド extend(補足)〈Python 2.x 版〉

実録:はじめてのプログラミング記事一覧
《29》連結:メソッド extend(補足)

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年2月9日(月)

連結:メソッド extend(補足)

class myList(object):
    ...
    def extend(self, iterable):
        if not iterable: return
        new = myList(iterable)
        del self.tail.next                # (1)
        self.tail.next = new.head.next    # (2)
        self.tail = new.tail              # (3)
        del new.head                      # (4)

指定された引数 iterable を、リストの末尾に連結する様子を、図解とともに解説します。


  • (1)もとのリストの終端にある、オブジェクト self.tail.next を削除 del(リソースを解放)します。
  • (2)もとのリストの末尾のノード self.tail.next は、新たなリストの先頭要素 new.head.next と同じものを参照します。すると、一方のリストの末尾に他方のリストの先頭が連結されます。
  • (3)末尾のノードを表わす属性 self.tail は、連結したリストの末尾のノード new.tail と同じものを参照します。すると、そのノードが新たな末尾になります。
  • (4)連結したリストの先端にある、オブジェクト new.head を削除 del します。

Tips

Last updated♪09/03/01