日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

实例List化

發布時間:2025/3/15 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例List化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現了__iter__()的實例雖能用于for循環,看似像list,但并不能將其當做list來使用,比如,Fib()[5]還是報錯
可通過實現__getitem__()方法,;來實現讓實例像list那樣按照下標取出元素

  實現按下標取元素

class Fib(object):def __getitem__(self, n):a, b = 1, 1for x in range(n):a, b = b, a + breturn af = Fib()f[0] #輸出:1f[1] #輸出:1f[2] #輸出:2f[3] #輸出:3f[10] #輸出:89f[100] #輸出:573147844013817084101

?

  實現切片功能

  __getitem__()傳入的參數可能是一個int,也可能是一個切片對象slice,因此需要做判斷
  如果把對象看成dict,__getitem__()的參數也可能是一個可以作key的object,例如str

class Fib(object):def __getitem__(self, n):if isinstance(n, int): # n是索引a, b = 1, 1for x in range(n):a, b = b, a + breturn aif isinstance(n, slice): # n是切片start = n.startstop = n.stopif start is None:start = 0a, b = 1, 1L = []for x in range(stop):if x >= start:L.append(a)a, b = b, a + breturn Lf[0:5] #輸出:[1, 1, 2, 3, 5]f[:10] #輸出:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]#該例沒有對step參數作處理,也沒有對負數作處理,所以,要正確實現一個__getitem__()還是有很多工作要做的

?

  實現元素的設定與刪除

  與之對應的還有__setitem__()方法和__delitem__()方法,分別用于為某個元素設值和刪除某個元素
  總之,通過上面的方法,可自定義的類表現得和Python自帶的list、tuple、dict沒什么區別,這完全歸功于動態語言的"鴨子類型",不需要強制繼承某個接口

?

轉載于:https://www.cnblogs.com/shiliye/p/10983966.html

總結

以上是生活随笔為你收集整理的实例List化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。