热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python中的数值类型与独特数据结构:你了解多少?

在Python中,列表(list)是一种内置的数据类型,属于有序且可变的集合,支持随时添加或删除元素。此外,Python还提供了多种独特的数据结构,如字典(dict)、集合(set)和元组(tuple),每种数据结构都有其特定的应用场景和优势。了解这些数值类型和数据结构对于高效编程至关重要。

list

list(列表)是Python内置的一种数据类型,它是一种有序、可变的集合,可以随时添加和删除其中的元素。

变量classmates就是一个list。关于list的操作如下:

方法

len():获取list元素的个数

通过索引访问

append:向list末尾追加元素

insert:把元素插入到指定的索引

pop():删除末尾的元素

pop(i):删除指定索引的元素

tuple

tuple是一种有序、不变的集合,也叫元组,一旦初始化就不能修改。与list相比,就没有append()、insert()这样的方法。

为什么有了list还要tuple?

因为tuple是不变的,所以代码更安全,所以如果能用tuple代替list就尽量用tuple吧。

Notes

不变指的是tuple的每个元素,指向永远不变,指向一个list,就不能改成指向其他对象,但指向的list本身是可以改变的。

特殊的tuple元组

dict

dict全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。用Python写一个dict如下:

Tips:dict内部存放的顺序和key放入的顺序是没有关系的。

对比于list

dict的特点:1.查找和插入的速度极快,不会随着key的增加而变慢 2.需要占用大量的内存,内存浪费多。

而list恰恰相反:1.查找和插入的时间随着元素的增加而变慢 2.占用空间小,浪费内存少。

小结

所以,dict是用空间来换取时间的一种方法。dict可以用在需要高速查找的地方,在Python代码中几乎无处不在,正确使用dict就变得十分重要,需要牢记的第一条就是dict的key必须是不可变的对象。dict根据key来计算value的存储位置(哈希算法),在Python中,字符串、整数等是不可以变的,而list是可变的,就不能作为key。

set

set和dict类似,也是一组key的集合,但不存储value,set可以看成数学意义上的无序和无重复元素的集合。要创建一个set,需要提供一个list作为输入集合:

两个set可以做数学意义上的交集、并集等操作:



推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • ZooKeeper集群脑裂问题及其解决方案
    本文深入探讨了ZooKeeper集群中可能出现的脑裂问题,分析其成因,并提供了多种有效的解决方案,确保集群在高可用性环境下的稳定运行。 ... [详细]
  • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • python开发mysql:单表查询&多表查询
    一单表查询,以下是表内容二多表查询,一下是表内容三总结&表创建过程单 ... [详细]
  • 深入解析MySQL中的七种JOIN查询
    本文详细介绍了MySQL中常用的七种JOIN查询方法,包括内连接、左外连接、右外连接、全外连接以及排除连接等,并通过实例进行说明。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
author-avatar
安韦苇8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有