欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中二維列表如何獲取子區(qū)域元素的組成

 更新時間:2017年01月19日 14:24:11   作者:瓜園耕讀  
這篇文章主要給大家介紹了Python中二維列表是如何獲取子區(qū)域元素的組成,文中給出了詳細(xì)的介紹和示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。

用過NumPY的應(yīng)該都知道,在二維數(shù)組中可以方便地使用區(qū)域切片功能,如下圖:

而這個功能在Python標(biāo)準(zhǔn)庫的List中是不支持的,在List中只能以一維方式來進(jìn)行切片操作:

但有時候我只想用一下這個功能,但又不想引入NumPY。其實這時候我也是可以在Python中實現(xiàn)的。這時候,只需在一個類中實現(xiàn)__getitem__特殊方法:

class Array:
 """實現(xiàn)__getitem__,支持序列獲取元素、Slice等特性"""

 def __init__(self, lst):
  self.__coll = lst

 def __repr__(self):
  """顯示列表"""

  return '{!r}'.format(self.__coll)

 def __getitem__(self, key):
  """獲取元素"""
  slice1, slice2 = key
  row1 = slice1.start
  row2 = slice1.stop
  col1 = slice2.start
  col2 = slice2.stop
  return [self.__coll[r][col1:col2] for r in range(row1, row2)]

試試看:

a = Array([['a', 'b', 'c', 'd'],
   ['e', 'f', 'g', 'h'],
   ['i', 'j', 'k', 'l'],
   ['m', 'n', 'o', 'p'],
   ['q', 'r', 's', 't'],
   ['u', 'v', 'w', 'x']])

print(a[1:5, 1:3])

官方文檔對__getitem__的解釋:

簡而言之,其主要用來獲取self[key]的值。

我在這里為了突出問題解決,只列出了關(guān)鍵代碼,異常判斷、邊界檢查、條件限制,甚至其他一些特殊方法如__setitem____delitem____len__等代碼,需視實際情況添加。

當(dāng)然,也有其他處理方式,如以下所示代碼,但不同方法無疑給了我各種場景下的多種選項。

a = [['a', 'b', 'c', 'd'],
  ['e', 'f', 'g', 'h'],
  ['i', 'j', 'k', 'l'],
  ['m', 'n', 'o', 'p'],
  ['q', 'r', 's', 't'],
  ['u', 'v', 'w', 'x']]

sl = lambda row1, row2, col1, col2, lst: \
  [lst[r][col1:col2] for r in range(row1, row2)]

sl(1, 5, 1, 3, a)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,Python編程一個吸引我的地方就是,它就像是一座金礦,挖著挖著很可能就挖出些意想不到的樂趣出來。希望本文的內(nèi)容對大家學(xué)習(xí)或者使用python能有一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Python+?Flask實現(xiàn)Mock?Server詳情

    Python+?Flask實現(xiàn)Mock?Server詳情

    這篇文章主要介紹了Python+?Flask實現(xiàn)Mock?Server詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python hash每次調(diào)用結(jié)果不同的原因

    python hash每次調(diào)用結(jié)果不同的原因

    這篇文章主要介紹了python hash每次調(diào)用結(jié)果不同的原因,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • python中創(chuàng)建和修改yaml文件的方法

    python中創(chuàng)建和修改yaml文件的方法

    YAML 是 "YAML Ain’t a Markup Language"的遞歸縮寫,yaml簡潔美觀,是一種常用的標(biāo)記語言,可以用來表達(dá)多種數(shù)據(jù)結(jié)構(gòu)和配置文件,本文給大家介紹python中如何創(chuàng)建和修改yaml文件,感興趣的朋友一起看看吧
    2023-11-11
  • Python實現(xiàn)多條件篩選Excel數(shù)據(jù)并批量繪制直方圖

    Python實現(xiàn)多條件篩選Excel數(shù)據(jù)并批量繪制直方圖

    這篇文章主要為大家介紹了如何Python對Excel數(shù)據(jù)進(jìn)行多條件篩選和去除并批量繪制直方圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2023-09-09
  • Python多線程與同步機(jī)制淺析

    Python多線程與同步機(jī)制淺析

    線程(Thread)是操作系統(tǒng)能夠進(jìn)行運算調(diào)度的最小單位;線程自己不擁有系統(tǒng)資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源
    2022-12-12
  • Python安裝docx依賴包教程

    Python安裝docx依賴包教程

    這篇文章主要介紹了Python安裝docx依賴包教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Win10 GPU運算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.14.0)

    Win10 GPU運算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.

    熟悉深度學(xué)習(xí)的人都知道,深度學(xué)習(xí)是需要訓(xùn)練的,本文主要介紹了Win10 GPU運算環(huán)境搭建,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解Python使用tensorflow入門指南

    詳解Python使用tensorflow入門指南

    本篇文章主要介紹了詳解Python使用tensorflow入門指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python封裝數(shù)據(jù)庫連接池詳解

    Python封裝數(shù)據(jù)庫連接池詳解

    這篇文章主要介紹了Python封裝數(shù)據(jù)庫連接池詳解,文章圍繞主題相關(guān)內(nèi)容展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • django 多數(shù)據(jù)庫及分庫實現(xiàn)方式

    django 多數(shù)據(jù)庫及分庫實現(xiàn)方式

    這篇文章主要介紹了django 多數(shù)據(jù)庫及分庫實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論