百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

掌握五个元组的用法,让python代码飞得更快

off999 2024-11-27 18:42 73 浏览 0 评论

作者:小K

来源:麦叔编程

说起Python的基本数据类型,第一时间想到肯定是int、str、list、dict...

因为这几种数据类型被使用的频率相对比较高,所以对他们的印象会更深刻点。

但是在Python的基本数据类型里有有一个神奇的类型,他的功能(方法)和列表重叠,而且列表的功能(方法)要比他多得多。

一般人在使用Array的时候,基本上都会选择列表(List)而不会去选择他。

「他就是今天的主角--元组(Tuple)」

List VS Tuple

共同点

List和Tuple都是Python的内置类型,都可以保存数据集合,都可以保存复合数据,都可以用index方法对其进行索引。

List

为什么列表(List)会被经常使用?

就是因为列表的对象方法多,能增、能减、能查、能数、能切、能排、甚至能用+号对其进行相加...

使用dir(list)也可看到他自带的方法:

['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Tuple

相比List,Tuple能使用的方法就少得可怜,只有区区四个。

使用dir(tuple)查看元组类型的内置方法:

['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

从上方dir(tuple)打印出的列表中我们发现,他内置函数只能实现查(index)和数(count)的功能。

「既然列表包含所有的元组的功能,那元组还有什么必要存在?」

元组之所以区别于列表的最大原因是:「列表是可变对象而元组是不可变对象。」

简单来说,列表是可读可写的文档,那么元组就是一个只读的文档。

代码示例:

>>> lst = ['maishu','jason']
>>> print(id(lst))
4498791232
>>> lst[1] = "kevin"
>>> print(id(lst))
4498791232

?

对列表进行修改之后,他在内存中的地址并不会被改变。

?

>>> tup = ("maishu","jason")
>>> print(id(tup))
4498746176
>>> tup[1] = "kevin"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

报错了。

那我直接把元组tup定义成("maishu","kevin")呢?

>>> tup = ("maishu","kevin")
>>> print(id(tup))
4498746240

我们发现tup的id已经发生改变了,事实就是每一次创建元组对象,都会分配到新的内存地址。

在相同元素组成下,列表会更占内存空间:

>>> import sys
>>> sys.getsizeof(lst)
72
>>> sys.getsizeof(tup)
56

Tuple的使用场景

  1. 如果写代码时,只需要一个Array当做常量的话,更推荐使用元组;
  2. 创建一个拥有相同元素的Array,元组会比列表快十几倍;
  3. 如果你需要一个Array不被任何人修改,那么也推荐使用元组;
  4. 不可变类型--元组可以当做字典的键,可变类型--列表不可以;
>>> a1 = ["a"]
>>> a2 = ("a",)
>>> {a1:"value"}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> {a2:"value"}
{('a',): 'value'}
>>> 

相关推荐

Python Flask 容器化应用链路可观测

简介Flask是一个基于Python的轻量级Web应用框架,因其简洁灵活而被称为“微框架”。它提供了Web开发所需的核心功能,如请求处理、路由管理等,但不会强制开发者使用特定的工具或库。...

Python GUI应用开发快速入门(python开发软件教程)

一、GUI开发基础1.主流GUI框架对比表1PythonGUI框架比较框架特点适用场景学习曲线Tkinter内置库,简单小型应用,快速原型平缓PyQt功能强大,商用许可专业级桌面应用陡峭PySi...

【MCP实战】Python构建MCP应用全攻略:从入门到实战!

实战揭秘:Python Toga 打造跨平台 GUI 应用的神奇之旅

在Python的世界里,GUI(图形用户界面)开发工具众多,但要找到一款真正跨平台、易于使用且功能强大的工具并不容易。今天,我们就来深入探讨一下Toga——一款Python原生、操作系统原...

python应用目录规划(python的目录)

Python大型应用目录结构规划(企业级最佳实践)核心原则模块化:按业务功能拆分,高内聚低耦合可扩展性:支持插件机制和动态加载环境隔离:清晰区分开发/测试/生产环境自动化:内置标准化的构建测试部署流...

Python图形化应用开发框架:PyQt开发简介

PyQt概述定义:PyQt是Python绑定Qt框架的工具集,用于开发跨平台GUI应用程序原理:通过Qt的C++库提供底层功能,PyQt使用SIP工具生成Python绑定特点:支持Windows/ma...

[python] 基于PyOD库实现数据异常检测

PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型...

Python、Selenium 和 Allure 进行 UI 自动化测试的简单示例脚本

环境准备确保你已经安装了以下库:SeleniumAllurepytest你可以使用以下命令安装所需库:pipinstallseleniumallure-pytestpytest示例代码下面的代...

LabVIEW 与 Python 融合:打造强大测试系统的利器

在现代测试系统开发领域,LabVIEW和Python各自凭借独特优势占据重要地位。LabVIEW以图形化编程、仪器控制和实时系统开发能力见长;Python则凭借丰富的库资源、简洁语法和强大数...

软件测试进阶之自动化测试——python+appium实例

扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...

Python openpyxl:读写样式Excel一条龙,测试报表必备!

无论你是测试工程师、数据分析师,还是想批量导出Excel的自动化工作者,只需一个库openpyxl,即可高效搞定Excel的各种需求!为什么选择openpyxl?支持.xlsx格式...

Python + Pytest 测试框架——数据驱动

引言前面已经和大家介绍过Unittest测试框架的数据驱动框架DDT,以及其实现原理。今天和大家分享的是Pytest测试框架的数据驱动,Pytest测试框架的数据驱动是由pytest自...

这款开源测试神器,圆了我玩游戏不用动手的梦想

作者:HelloGitHub-Anthony一天我在公司用手机看游戏直播,同事问我在玩什么游戏?我和他说在看直播,他恍然大悟:原来如此,我还纳闷你玩游戏,咋不用动手呢。。。。一语惊醒梦中人:玩游戏不用...

Python单元测试框架对比(pycharm 单元测试)

一、核心框架对比特性unittest(标准库)pytest(主流第三方)nose2(unittest扩展)doctest(文档测试)安装Python标准库pipinstallpytestp...

利用机器学习,进行人体33个2D姿态检测与评估

前几期的文章,我们分享了人脸468点检测与人手28点检测的代码实现过程,本期我们进行人体姿态的检测与评估通过视频进行人体姿势估计在各种应用中起着至关重要的作用,例如量化体育锻炼,手语识别和全身手势控制...

取消回复欢迎 发表评论: