全网整合营销服务商

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

免费咨询热线: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实现把二维列表变为一维列表的方法分析  # 这时候  # 也有  # 出了  # 我只  # 只需  # 一座  # 有一定  # 很可能  # 不支持  # 实际情况  # 用过  # 所示  # 这篇文章  # 但又  # 给了我  # 它就  # 但不  # 其主要  # 想用  # 试试看 


相关文章: 宝塔建站无法访问?如何排查配置与端口问题?  如何选择CMS系统实现快速建站与SEO优化?  C#怎么创建控制台应用 C# Console App项目创建方法  如何在景安云服务器上绑定域名并配置虚拟主机?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  建站之星如何快速解决建站难题?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  广东企业建站网站优化与SEO营销核心策略指南  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何选择PHP开源工具快速搭建网站?  如何快速查询网址的建站时间与历史轨迹?  自助网站制作软件,个人如何自助建网站?  建站之星下载版如何获取与安装?  高端建站如何打造兼具美学与转化的品牌官网?  如何用搬瓦工VPS快速搭建个人网站?  建站之星多图banner生成与模板自定义指南  山东云建站价格为何差异显著?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  已有域名和空间如何快速搭建网站?  如何在云主机上快速搭建多站点网站?  实例解析angularjs的filter过滤器  已有域名和空间如何搭建网站?  创业网站制作流程,创业网站可靠吗?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  网站制作模板下载什么软件,ppt模板免费下载网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在IIS中新建站点并解决端口绑定冲突?  高端建站三要素:定制模板、企业官网与响应式设计优化  宁波免费建站如何选择可靠模板与平台?  如何通过云梦建站系统实现SEO快速优化?  做企业网站制作流程,企业网站制作基本流程有哪些?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  大同网页,大同瑞慈医院官网?  如何用美橙互联一键搭建多站合一网站?  网站制作公司排行榜,四大门户网站排名?  建站之星与建站宝盒如何选择最佳方案?  如何通过VPS建站无需域名直接访问?  音乐网站服务器如何优化API响应速度?  电商网站制作公司有哪些,1688网是什么意思?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  网站制作企业,网站的banner和导航栏是指什么?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  威客平台建站流程解析:高效搭建教程与设计优化方案  制作宣传网站的软件,小红书可以宣传网站吗?  如何确保西部建站助手FTP传输的安全性?  建站之星后台管理:高效配置与模板优化提升用户体验  实惠建站价格推荐:2025年高性价比自助建站套餐解析  建站之星如何取消后台验证码生成?  广州营销型建站服务商推荐:技术优势与SEO优化解析 

您的项目需求

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