全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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编程一个吸引我的地方就是,它就像是一座金矿,挖着挖着很可能就挖出些意想不到的乐趣出来。希望本文的内容对大家学习或者使用python能有一定的帮助,如果有疑问大家可以留言交流。


# python  # 二维列表  # 遍历  # 二维列表操作  # python二维列表一维列表的互相转换实例  # Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)  # python中的二维列表实例详解  # python 列表降维的实例讲解  # Python中max函数用于二维列表的实例  # python 去除二维数组/二维列表中的重复行方法  # Python嵌套列表转一维的方法(压平嵌套列表)  # python创建与遍历List二维列表的方法  # python实现把二维列表变为一维列表的方法分析  # 这时候  # 也有  # 出了  # 我只  # 只需  # 一座  # 有一定  # 很可能  # 不支持  # 实际情况  # 用过  # 所示  # 这篇文章  # 但又  # 给了我  # 它就  # 但不  # 其主要  # 想用  # 试试看 


相关文章: 小建面朝正北,A点实际方位是否存在偏差?  建站之星×万网:智能建站系统+自助建站平台一键生成  制作旅游网站html,怎样注册旅游网站?  如何快速辨别茅台真假?关键步骤解析  建站之星后台管理:高效配置与模板优化提升用户体验  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何在腾讯云免费申请建站?  再谈Python中的字符串与字符编码(推荐)  建站之星后台密码遗忘?如何快速找回?  如何用VPS主机快速搭建个人网站?  ,怎么用自己头像做动态表情包?  如何快速生成可下载的建站源码工具?  如何在腾讯云服务器快速搭建个人网站?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  如何选择高效稳定的ISP建站解决方案?  公司网站制作价格怎么算,公司办个官网需要多少钱?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站VPS配置与SEO优化指南:关键词排名提升策略  建站之星3.0如何解决常见操作问题?  制作网站的基本流程,设计网站的软件是什么?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  高端网站建设与定制开发一站式解决方案 中企动力  ui设计制作网站有哪些,手机UI设计网址吗?  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何通过老薛主机一键快速建站?  宝塔Windows建站如何避免显示默认IIS页面?  网页设计网站制作软件,microsoft office哪个可以创建网页?  韩国服务器如何优化跨境访问实现高效连接?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何访问已购建站主机并解决登录问题?  如何挑选优质建站一级代理提升网站排名?  如何生成腾讯云建站专用兑换码?  宝塔建站后网页无法访问如何解决?  如何用免费手机建站系统零基础打造专业网站?  如何通过主机屋免费建站教程十分钟搭建网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  公司网站的制作公司,企业网站制作基本流程有哪些?  如何用西部建站助手快速创建专业网站?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  网站制作公司排行榜,抖音怎样做个人官方网站  定制建站策划方案_专业建站与网站建设方案一站式指南  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  详解jQuery停止动画——stop()方法的使用  如何通过云梦建站系统实现SEO快速优化?  建站之星CMS五站合一模板配置与SEO优化指南  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。