首頁  >  文章  >  後端開發  >  Python中二維列表如何取得子區域元素的組成

Python中二維列表如何取得子區域元素的組成

高洛峰
高洛峰原創
2017-02-14 14:05:101651瀏覽

這篇文章主要給大家介紹了Python中二維列表是如何獲取子區域元素的組成,文中給出了詳細的介紹和示例代碼,相信對大家的理解和學習具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。

用過NumPY的應該都知道,在二維數組中可以方便地使用區域切片功能,如下圖:

Python中二維列表如何取得子區域元素的組成

而這個功能在Python標準庫的List而這個功能在Python標準庫的

List

Python中二維列表如何取得子區域元素的組成中是不支援的,在

List

中只能以一維方式來進行切片操作:

但有時候我只想用一下這個功能,但又不想引入

NumPY

。其實這時候我也是可以在Python中實現的。這時候,只需在一個類別中實作

__getitem__

特殊方法:

class Array:
 """实现__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)]

試試看:

Python中二維列表如何取得子區域元素的組成

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])

簡而言之,其主要用來取得Python中二維列表如何取得子區域元素的組成self[key]

的值。

我在這裡為了突出問題解決,只列出了關鍵代碼,異常判斷、邊界檢查、條件限制,甚至其他一些特殊方法如__setitem__

__delitem____len__等代碼,需視實際情況添加。 當然,也有其他處理方式,如下所示程式碼,但不同方法無疑給了我各種場景下的多種選項。

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)

更多Python中二維列表如何取得子區域元素的組成相關文章請關注PHP中文網! Python中二維列表如何取得子區域元素的組成

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn