Python.use(better) #list: step11 -- def insert
‖記事一覧‖
Python.use(better)
step11 -- def insert
《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28
事例:モジュールを起動する
■ 全項目を確認する
全ステップの「項目」を確認するには、関数 do を利用します。
$ python myList.py >>> do() ... 11: step11 -- def insert(self, index, item)
■ 各項目を実行する
各ステップの「動作」を確認するには、関数 do の実引数を指定します。
>>> do(11) ... >>> # ---------------------------------------- insert >>> s = myList("ABC"); s, len(s) (['A', 'B', 'C'], 3) >>> s.insert(0,"_"); s, len(s) (['_', 'A', 'B', 'C'], 4) >>> s = myList("ABC"); s, len(s) (['A', 'B', 'C'], 3) >>> s.insert(1,"_"); s, len(s) (['A', '_', 'B', 'C'], 4) >>> s = myList("ABC"); s, len(s) (['A', 'B', 'C'], 3) >>> s.insert(2,"_"); s, len(s) (['A', 'B', '_', 'C'], 4) >>> s = myList("ABC"); s, len(s) (['A', 'B', 'C'], 3) >>> s.insert(3,"_"); s, len(s) (['A', 'B', 'C', '_'], 4) >>>
事例:コードの解説
def step11(): """def insert(self, index, item)""" class myList(object): ... def insert(self, index, item): #1: prev,node = self.head,self.head.next n = 0 while node: if n==index: prev.next = Node(item, prev.next) break prev,node = node,node.next n += 1 else: prev.next = Node(item, prev.next) ## ---------------------------------------- local = locals() tips = ( "__init__", "append", "__len__", "__contains__", "count", "index", "__getitem__", "__setitem__", "insert", ) for e in tips: print(">>> #","-"*40,e) eval("ex_%s(SPEC, local)"%e)
》こちらに移動中です《
■ #1: 要素の帰属
メソッド __setitem__ は、演算子 [] に呼応して、各要素の値を設定します。
def insert(self, index, item): #1:
prev,node = self.head,self.head.next
n = 0
while node:
if n==index:
prev.next = Node(item, prev.next)
break
prev,node = node,node.next
n += 1
else:
prev.next = Node(item, prev.next)
def count(self, value): #1: AFTER return sum(1 for e in self if e==value)
- 連結リスト self の各ノード _ を順にたどりながら、その中のどれか any が value と同値かを判定します。
》こちらに移動中です《
↑TOP