2 常见的Python数据结构-元组、列表
wptr33 2024-11-18 17:46 35 浏览
元组
1)一个可固定长度,不可改变的Python对象。创建元组的方式用逗号分隔一系列值。
2)定义复杂元组,要将值放到括号内进行分割。
3)用tuple可以将任意序列或迭代器转换成元组。
4)元组可以通过下标进行访问。
5)元组中存储的对象可能是可变对象,但一旦创建了元组,元组中的对象就不能进行修改。
6)如果元组中的某个对象是可变的,如:列表。可以在原位进行修改。
7)用加号运算符将元组串联起来。
8)元组乘以一个整数,会将整数个元组复制串联起来。
9)将多个变量按照顺序赋值一个元组,则会将变量依次赋予元组中的元素,即元组的拆分。如果变量数超过或少于元组的元素个数,均会报错。
- 如果变量数多,则报【not enough values to unpack】;
- 如果变量数少,则报【too many values to unpack】。
即使含有元组的元组也可以拆分。
利用元组拆分的原理,可以方便的完成变量值交换。
其他语言交换:
a = 1 b = 2 temp = a a = b b = temp print('a = '+a ', b = ' + b)
a = 1 b = 2 a,b = b,a print('a = ' + str(a) + ', b = ' + str(b))
元组拆分,主要的使用场景为:1)迭代元组或列表序列。2)从函数返回多个值。
高级拆分:允许从元组的开头摘取几个元素,使用*[变量名]语法,获取后面的元组中的元素到列表(数组)中。也可用在函数签名中以抓取任意长度列表的位置参数。
如果不使用*[变量]获取的数组,想要舍弃,则可以使用*_省略。
a,b,*_ = tup
10)元组的常用方法
元组大小、内容均不能修改,因此它的实例方法都很轻量。
- count():可以统计某个值出现的数量。
列表
与元组对比,列表的长度可变、内容可以被修改。可以使用方括号定义,或使用list()函数。
1)使用迭代器生成列表。
2)添加、删除元素
- append()在列表末尾添加元素。
- insert()在特定位置添加元素。插入的位置在0~列表长度之间。
- pop()移除指定位置的元素,insert()函数的逆函数。执行时,会返回被移除的元素。
- remove()列表中移除某个值,remove会先寻找第一个值移除。
3)in 检查列表中是否包含某个值。
列表检查性能远比检查字典和集合速度快,因为Python列表搜素采用线性搜素;在字典和集合中,同样时间内还可以检查其他项(基于哈希表)。
4)列表可以通过加号将两个列表串联起来。
5)extend()向列表中追加多个元素。
通过加号串联列表,计算量大,需要新建一个新列表,并且要复制对象。用extend()追加元素,尤其是到一个大列表中,更为可取。
a_list = []
for batch in lists:
a_list.extend(batch)
a_list = []
for batch in lists:
a_list = a_list + batch
上面两个代码块性能,使用extend()方法的比较好。
6)sort()讲一个列表原地排序(不创建新对象)。
reverse:如果设置为True,列表将被降序排列,默认为False,即升序排列。
key:用于进行比较的函数,该函数只有一个参数,即列表中的元素,并返回一个可以用于比较的关键字。这个函数也可以使用系统预置的函数,如:len()。
7)bisect模块的bisect()和insort()方法。
bisect()函数是一个通用的二分查找工具,它可以用来查找一个元素在已排序的序列中应该插入的位置,以维持序列的排序,但并不插入这个元素。具体用法如下:
运行这段代码可以发现,变量pos输出的是4,即元素6应该插入到列表中索引为4的位置,这个列表就能保持升序排列。
insort函数是bisect函数的变种,它可以在查找到插入位置的同时插入元素。具体用法和bisect类似,只是调用的函数不同,如下:
这个函数接受两个参数,第一个参数是已排序的序列,第二个参数是要插入的元素。该函数会将元素插入到序列的正确位置。
8)切片:基本形式在方括号中使用start:stop。切片的起始位置start包括在元素中,位置end不包括在其中,所以结果中包含元素个数为end - start。
切片被序列赋值。
切片赋值的原理如下图所示。
start 或 stop 均可以被省略,省略后,分别默认序列的开头和结尾。
负数表明从后向前切片。
切片第二个冒号后面使用step,可以每隔一定元素取元素。
step使用-1可以将列表反转。
相关推荐
- HIVE 窗口函数详解(hive常用开窗函数)
-
什么是窗口函数窗口函数是SQL中一类特别的函数。和聚合函数相似,窗口函数的输入也是多行记录。不同的是,聚合函数的作用于由GROUPBY子句聚合的组,而窗口函数则作用于一个窗口,这里,窗口...
- SQL高效使用20招:数据分析师必备技巧
-
基础优化技巧善用EXPLAIN分析执行计划EXPLAINSELECT*FROMordersWHEREorder_date>'2024-01-01';...
- 答记者问之 - Redis 的高效架构与应用模式解析
-
问:极客程序员你好,请帮我讲一讲redis答:redis主要涉及以下核心,我来一一揭幕Redis的高效架构与应用模式解析...
- MySQL通过累计求新增(mysql新增表字段语句)
-
前两天的那篇内容《MySQL递归实现单列分列成多行》...
- 一文讲懂SQL窗口函数 大厂必考知识点
-
大家好,我是宁一。今天是我们的第24课:窗口函数。...
- 圣诞快乐:用GaussDB T 绘制一颗圣诞树,兼论高斯数据库语法兼容
-
转眼就是圣诞的节日,祝大家节日快乐。用GaussDBT(也就是GaussDB100)绘制一棵圣诞树,纯国产,更喜庆。话不多说,上图:SQL如下:SELECTCASEWHENENMOTE...
- Minitab:功能强大的质量管理、统计分析及统计图形软件
-
一、Minitab简介Minitab软件是为质量改善、教育和研究应用领域提供统计软件和服务的先导,是全球领先的质量管理和六西格玛实施软件工具及持续质量改进的良好工具软件,她具有强大的功能和简易的可视化...
- 如何熟练使用SQL查询(如何熟练使用sql查询内容)
-
要熟练使用SQL查询(StructuredQueryLanguage),你需要系统地从语法入门,到实战练习,再到性能优化与多表查询的掌握。下面是一条循序渐进、实战驱动的学习路径:第一阶段:S...
- SAP SE38如何在多个系统间同步代码
-
上一篇文章写了如何在多个系统之间同步开发对象:多套SAPERP之间一键同步ABAP开发内容,有兄弟问有没有简单办法同步SE38程序代码的,因为使用请求的方式同步代码有点小题大做了。...
- 技术栈:刷了百道SQL题,还是不会用?你应该这样补短板
-
这是来自用户的提问,也是很多人遇到的困惑:...
- mysql窗口函数为了解决更加复杂的问题
-
为了解决复杂问题的窗口函数我们先讲一下窗口函数是什么窗口和普通的函数作用相同在不同列上进行查询和返回比如我们有如下的表...
- MariaDB开窗函数(开窗函数 mysql)
-
在使用GROUPBY子句时,总是需要将筛选的所有数据进行分组操作,它的分组作用域是整张表。分组以后,为每个组只返回一行。而使用基于窗口的操作,类似于分组,但却可以对这些"组"(即窗口...
- 一篇文章搞定MySQL中的窗口函数(mysql常用的窗口函数)
-
我是孙斌,北理数学系毕业,分享数据分析相关知识,点击右上角“关注”,学习更多数据分析知识。在MySQL中,分组groupby一般和聚合函数连用,如groupby+sum,这样能够得到每个组的总和,...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git 执行pull错误如何撤销 git pull fail
-
面试官:git pull是哪两个指令的组合?
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)