首页 > 编程语言 >python 命名切片

python 命名切片

时间:2023-12-18 19:06:02浏览次数:31  
标签:编码 slice python items 代码 切片 record 命名

问题

你的程序已经出现一大堆已无法直视的硬编码切片下标,然后你想清理下代码。

解决方案

假定你有一段代码要从一个记录字符串中几个固定位置提取出特定的数据字段 (比如文件或类似格式):

######    0123456789012345678901234567890123456789012345678901234567890'
record = '....................100 .......513.25 ..........'
cost = int(record[20:23]) * float(record[31:37])
与其那样写,为什么不想这样命名切片呢:
SHARES = slice(20, 23)
PRICE = slice(31, 37)
cost = int(record[SHARES]) * float(record[PRICE])

第二种版本中,你避免了大量无法理解的硬编码下标,使得你的代码更加清晰可读 了。

讨论

一般来讲,代码中如果出现大量的硬编码下标值会使得可读性和可维护性大大降 低。比如,如果你回过来看看一年前你写的代码,你会摸着脑袋想那时候自己到底想干 嘛啊。这里的解决方案是一个很简单的方法让你更加清晰的表达代码到底要做什么。

内置的 slice() 函数创建了一个切片对象,可以被用在任何切片允许使用的地方。 比如:

>>> items = [0, 1, 2, 3, 4, 5, 6] >>> a = slice(2, 4)
>>> items[2:4]
[2, 3]
>>> items[a]
[2, 3]
>>> items[a] = [10,11] >>> items
[0, 1, 10, 11, 4, 5, 6] >>> del items[a]
>>> items
[0, 1, 4, 5, 6]

如果你有一个切片对象 a,你可以分别调用它的 a.start , a.stop , a.step 属性 来获取更多的信息。比如:

>>> a = slice(5, 50, 2) >>> a.start
5
>>> a.stop
50
>>> a.step 2
>>>

标签:编码,slice,python,items,代码,切片,record,命名
From: https://blog.51cto.com/u_16251183/8876508

相关文章

  • Python 中如何编写类型提示
    哈喽大家好,我是咸鱼我们知道Python是一门具有动态特性的语言,在编写Python代码的时候不需要显式地指定变量的类型这样做虽然方便,但是降低了代码的可阅读性,在后期review代码的时候容易对变量的类型产生混淆,需要查阅大量上下文,导致后期维护困难为了提高代码的可读性、可维护......
  • python123——numpy、scipy、pandas、matplotlib的读书报告
     一、函数的基本用法numpyNumPy(NumericalPython)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的......
  • Python 如何读取 Excel 表内容
    在数据处理和分析中,Excel是一个常用的工具,而使用Python读取Excel表内容可以更方便地进行数据分析和处理。本文将介绍几种常见的Python库和方法,帮助您实现读取Excel表内容的操作。使用openpyxl库读取Excel表内容openpyxl是一个用于读写Excel文件的Python库,支持Excel2010及以上版本......
  • python怎么统计文档中字母出现的次数
    当你需要统计文档中字母出现的次数时,Python提供了许多方法和库来方便地完成这个任务。下面将介绍两种常见的方法:使用纯Python和使用第三方库。方法一:使用纯Python使用纯Python的方法可以帮助你统计文档中字母出现的次数。以下是一个简单的示例代码:```python#打开文档并读取内容wi......
  • python self是什么意思?怎么使用?
    在Python中,self是一个特殊的参数,通常用作方法的第一个参数。它表示对类实例自身的引用,类似于其他编程语言中的this关键字。self参数的命名可以是任意合法的标识符,但按照惯例,大多数开发者都使用self。为什么需要self参数?使用self参数的目的是允许类的实例访问其自身的属性和方法。通......
  • Python 删除行列的操作方法有哪些
    在Python中,删除行和列的操作通常用于处理二维数组、矩阵或数据框等数据结构。通过删除不需要的行列,可以使数据结构更加紧凑和易于处理。本文将介绍几种Python中删除行列的操作方法。删除行在Python中,删除行的操作方法有多种,以下是其中的几种方法:方法一:使用`del`关键字使用`del`关键......
  • 如何在 Python 的 while 循环中只打印一次
    在Python的while循环中,我们有时候需要打印一些信息或者执行某些操作,但是我们希望这些操作只执行一次,而不会影响循环的进行。本文将介绍在Python的while循环中如何只打印一次,而不破坏循环的进行。使用标志位使用标志位是在Python的while循环中只打印一次的常用方法。标志位可以是任......
  • 如何利用 python 制作词云图
     制作词云图是一种可视化文本数据的方法,可以通过展示词频来展示文本中的关键词信息。在Python中,我们可以使用第三方库`wordcloud`来制作词云图。本文将介绍如何利用Python制作词云图。 安装依赖库 在开始之前,我们需要先安装`wordcloud`库和`matplotlib`库。可以使用以下命令进......
  • Ubuntu20.04下DeepStream Python环境安装
    引子最近工作学习中遇到多路视频解码抽帧的需求,考虑到项目上大多数用到的都是Nvidia的显卡,常规CPU软解显然无法满足多路的需求,故考虑使用N卡的硬解码功能。然后我就毫不犹豫的去找轮子了,ChatGPT这么火,那就先问问它吧。嗯,呃,貌似下图红框里答案只有那么一点点靠谱(不要问我为啥......
  • python celery的使用
    celery本生就不介绍了感兴趣的看https://c.biancheng.net/view/s0j4eth.html这个人家介绍的挺好的1.安装部署Celery涉及任务队列和结果存储,我们使用Redis,做例子前要先安装好redis。我们可以通过命令行方式下载和安装指定版本:#安装Celerypipinstallcelery==5.2.3#......