最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python中的__getitem__方法與slice對象的切片操作

 更新時間:2016年06月27日 15:12:19   作者:cangmean  
Python中想要使類的實例像list一樣使用下標,可以用__getitem__方法,而配合slice對象則可以實現(xiàn)list一樣的切片,詳解Python中的__getitem__方法與slice對象的切片操作

Fib實例雖然能作用于for循環(huán),看起來和list有點像,但是,把它當成list來使用還是不行,比如,取第5個元素:

>>> Fib()[5]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'Fib' object does not support indexing

要表現(xiàn)得像list那樣按照下標取出元素,需要實現(xiàn)__getitem__()方法:

class Fib(object):
  def __getitem__(self, n):
    a, b = 1, 1
    for x in range(n):
      a, b = b, a + b
    return a

現(xiàn)在,就可以按下標訪問數(shù)列的任意一項了:

>>> f = Fib()
>>> f[0]
1
>>> f[1]
1
>>> f[2]
2
>>> f[3]
3
>>> f[10]
89
>>> f[100]
573147844013817084101

slice對象與__getitem__

想要使類的實例像列表一樣使用下標, 可以設(shè)置__getitem__方法。比如:

class _List(object):

  def __getitem__(self, key):
    print key

l = _List()
l[3]  # print 3

但是如果想要使用切片操作的

l[1:4] # print slice(1, 4, None)

會創(chuàng)建一個slice對象用于切片, 可以通過help(slice)查看具體操作。

a = slice(1, 4, None)

range(5)[a] # print [1, 2, 3]

更加豐富的操作

class _List(object):
  
  def __init__(self, _list):
    self._list = _list

  def __getitem__(self, key):
    if isinstance(key, int):
      return self._list[key]
    elif isinstance(key, slice):
      reutrn self.__class__(self._list[key])

if __name__ == '__main__':
  c = _List(range(10))
  b = c[1:5]
  print b[3] # print 4

如果key是一個整形的話就返回列表元素,如果是一個slice對象的話,就創(chuàng)建一個實例并返回。

相關(guān)文章

  • 用Python生成HTML表格的方法示例

    用Python生成HTML表格的方法示例

    這篇文章主要介紹了用Python生成HTML表格的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Python打印特殊符號及對應編碼解析

    Python打印特殊符號及對應編碼解析

    這篇文章主要介紹了Python打印特殊符號及對應編碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Python中unittest的斷言方法詳解

    Python中unittest的斷言方法詳解

    大家好,本篇文章主要講的是Python中unittest的斷言方法詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python plotly畫柱狀圖代碼實例

    python plotly畫柱狀圖代碼實例

    這篇文章主要介紹了python plotly畫柱狀圖代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python?數(shù)據(jù)類型--集合set

    Python?數(shù)據(jù)類型--集合set

    這篇文章主要介紹了Python?數(shù)據(jù)類型集合set,在集合中的元素是無序的、唯一的、不可變的類型,它還有一個特殊的列表,可以對數(shù)據(jù)去重,下面來對其進行更徹底的認識吧,需要的小伙伴可以參考一下
    2022-02-02
  • Python中的四種交換數(shù)值的方法解析

    Python中的四種交換數(shù)值的方法解析

    這篇文章主要介紹了Python中的四種交換數(shù)值的方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python連接MySQL數(shù)據(jù)庫并查找表信息

    Python連接MySQL數(shù)據(jù)庫并查找表信息

    本文主要介紹了Python連接MySQL數(shù)據(jù)庫并查找表信息,通過使用Python中的MySQL Connector模塊,連接到MySQL服務器并執(zhí)行SQL查詢語句,可以獲取表的結(jié)構(gòu)、列信息、行數(shù)據(jù)等,感興趣的可以了解一下
    2023-08-08
  • 如何修改新版Python的pip默認安裝路徑

    如何修改新版Python的pip默認安裝路徑

    pip安裝的第三方庫默認存放在C盤中,為了便于管理和不過度占用C盤空間所以想修改默認的pip路徑,這篇文章主要介紹了修改新版Python的pip默認安裝路徑的過程,需要的朋友可以參考下
    2024-03-03
  • Python Datetime模塊和Calendar模塊用法實例分析

    Python Datetime模塊和Calendar模塊用法實例分析

    這篇文章主要介紹了Python Datetime模塊和Calendar模塊用法,結(jié)合實例形式分析了Python日期時間及日歷相關(guān)的Datetime模塊和Calendar模塊原理、用法及操作注意事項,需要的朋友可以參考下
    2019-04-04
  • Python操作PDF圖片的基本方法(增刪改查)

    Python操作PDF圖片的基本方法(增刪改查)

    PDF文件中的圖片可以豐富文檔內(nèi)容,提升用戶的閱讀體驗,除了在PDF中添加圖片外,有時也需要替換或刪除其中的圖片,文本將提供三個示例,介紹如何使用Python?操作PDF文件中的圖片,需要的朋友可以參考下
    2024-04-04

最新評論

井研县| 大冶市| 慈溪市| 云霄县| 名山县| 永平县| 瑞昌市| 曲松县| 利辛县| 浮梁县| 布尔津县| 遂溪县| 藁城市| 昆明市| 句容市| 加查县| 车致| 太仆寺旗| 延津县| 巴青县| 美姑县| 定日县| 甘孜县| 陈巴尔虎旗| 淮北市| 汝阳县| 新郑市| 仙桃市| 景东| 达日县| 丰台区| 呼伦贝尔市| 台前县| 武夷山市| 河曲县| 屏东县| 长顺县| 无极县| 筠连县| 吉安县| 靖宇县|