用过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小时内与您取得联系。