最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python中二维列表如何获取子区域元素的组成

来源:动视网 责编:小采 时间:2020-11-27 14:16:45
文档

Python中二维列表如何获取子区域元素的组成

Python中二维列表如何获取子区域元素的组成:这篇文章主要给大家介绍了Python中二维列表是如何获取子区域元素的组成,文中给出了详细的介绍和示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。用过NumPY的应该都知道,在二维数组中可以方便地使用区域切片功能
推荐度:
导读Python中二维列表如何获取子区域元素的组成:这篇文章主要给大家介绍了Python中二维列表是如何获取子区域元素的组成,文中给出了详细的介绍和示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。用过NumPY的应该都知道,在二维数组中可以方便地使用区域切片功能
 这篇文章主要给大家介绍了Python中二维列表是如何获取子区域元素的组成,文中给出了详细的介绍和示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。

用过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中二维列表如何获取子区域元素的组成相关文章请关注PHP中文网!

文档

Python中二维列表如何获取子区域元素的组成

Python中二维列表如何获取子区域元素的组成:这篇文章主要给大家介绍了Python中二维列表是如何获取子区域元素的组成,文中给出了详细的介绍和示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。用过NumPY的应该都知道,在二维数组中可以方便地使用区域切片功能
推荐度:
标签: 区域 二维 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top