国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2019-11-25 16:23:44
字體:
來源:轉載
供稿:網友

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

而這個功能在Python標準庫的List中是不支持的,在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)]

試試看:

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]的值。

我在這里為了突出問題解決,只列出了關鍵代碼,異常判斷、邊界檢查、條件限制,甚至其他一些特殊方法如__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編程一個吸引我的地方就是,它就像是一座金礦,挖著挖著很可能就挖出些意想不到的樂趣出來。希望本文的內容對大家學習或者使用python能有一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昔阳县| 邵阳市| 东阿县| 西盟| 达州市| 缙云县| 武夷山市| 昌江| 靖宇县| 三门峡市| 林芝县| 新郑市| 汉中市| 三台县| 溆浦县| 姜堰市| 马尔康县| 绍兴市| 鄢陵县| 邵东县| 西充县| 千阳县| 那坡县| 固原市| 南溪县| 应城市| 平邑县| 斗六市| 新田县| 营口市| 屏东市| 鹤山市| 开江县| 托克逊县| 福州市| 遵义县| 澎湖县| 萨迦县| 化隆| 太康县| 河源市|