Python中二維列表如何獲取子區(qū)域元素的組成
用過(guò)NumPY
的應(yīng)該都知道,在二維數(shù)組中可以方便地使用區(qū)域切片功能,如下圖:
而這個(gè)功能在Python標(biāo)準(zhǔn)庫(kù)的List
中是不支持的,在List
中只能以一維方式來(lái)進(jìn)行切片操作:
但有時(shí)候我只想用一下這個(gè)功能,但又不想引入NumPY
。其實(shí)這時(shí)候我也是可以在Python中實(shí)現(xiàn)的。這時(shí)候,只需在一個(gè)類(lèi)中實(shí)現(xiàn)__getitem__
特殊方法:
class Array: """實(shí)現(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])
官方文檔對(duì)__getitem__
的解釋?zhuān)?/p>
簡(jiǎn)而言之,其主要用來(lái)獲取self[key]
的值。
我在這里為了突出問(wèn)題解決,只列出了關(guān)鍵代碼,異常判斷、邊界檢查、條件限制,甚至其他一些特殊方法如__setitem__
、 __delitem__
與__len__
等代碼,需視實(shí)際情況添加。
當(dāng)然,也有其他處理方式,如以下所示代碼,但不同方法無(wú)疑給了我各種場(chǎng)景下的多種選項(xià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é)
以上就是這篇文章的全部?jī)?nèi)容了,Python編程一個(gè)吸引我的地方就是,它就像是一座金礦,挖著挖著很可能就挖出些意想不到的樂(lè)趣出來(lái)。希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用python能有一定的幫助,如果有疑問(wèn)大家可以留言交流。
- python二維列表一維列表的互相轉(zhuǎn)換實(shí)例
- Python 專(zhuān)題五 列表基礎(chǔ)知識(shí)(二維list排序、獲取下標(biāo)和處理txt文本實(shí)例)
- python中的二維列表實(shí)例詳解
- python 列表降維的實(shí)例講解
- Python中max函數(shù)用于二維列表的實(shí)例
- python 去除二維數(shù)組/二維列表中的重復(fù)行方法
- Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)
- python創(chuàng)建與遍歷List二維列表的方法
- python實(shí)現(xiàn)把二維列表變?yōu)橐痪S列表的方法分析
相關(guān)文章
Python+?Flask實(shí)現(xiàn)Mock?Server詳情
這篇文章主要介紹了Python+?Flask實(shí)現(xiàn)Mock?Server詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09python hash每次調(diào)用結(jié)果不同的原因
這篇文章主要介紹了python hash每次調(diào)用結(jié)果不同的原因,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Python實(shí)現(xiàn)多條件篩選Excel數(shù)據(jù)并批量繪制直方圖
這篇文章主要為大家介紹了如何Python對(duì)Excel數(shù)據(jù)進(jìn)行多條件篩選和去除并批量繪制直方圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2023-09-09Win10 GPU運(yùn)算環(huán)境搭建(CUDA10.0+Cudnn 7.6.5+pytroch1.2+tensorflow1.
熟悉深度學(xué)習(xí)的人都知道,深度學(xué)習(xí)是需要訓(xùn)練的,本文主要介紹了Win10 GPU運(yùn)算環(huán)境搭建,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09django 多數(shù)據(jù)庫(kù)及分庫(kù)實(shí)現(xiàn)方式
這篇文章主要介紹了django 多數(shù)據(jù)庫(kù)及分庫(kù)實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04