python教程(五)·列表与元组
在介绍了通用的序列操作后,我们来学习序列类型中的列表和元组
列表
回顾
我们已经初步学习了列表,在深入之前,让我们简单回顾一下以往的知识。
创建列表的方法:
>>> list_1 = [] # 创建空列表
>>> list_2 = list() # 创建空列表
>>> list_3 = [1,2,3,4] # 创建带有元素的列表
>>> list_4 = list('abcd') # 创建一个列表 ['a','b','c','d'] (这是没学习过的)
给元素赋值:
>>> x = [1,2,3]
>>> x[1] = 2 # 将索引为1的元素赋值为2
>>> x
[1, 2, 3]
删除元素:
>>> del x[0]
>>> x
[2, 3]
上一节我们还学习了分片、相加、乘法等通用序列操作,这里就不过多阐述
分片赋值
在上一节中,我们介绍了通用的序列分片操作。事实上,列表的分片操作并未在此停下脚步。
对于列表,我们还可以使用分片来批量赋值元素:
>>> x = list('abcd')
>>> x
['a', 'b', 'c', 'd']
>>> x[1:3] = list('ef') # 将索引为1和索引为2的元素分别替换成'e'、'f'
>>> x
['a', 'e', 'f', 'd']
用于替换的序列不必要与原序列等长:
>>> x = [1,2,3,4,5]
>>> x[1:3] = ['a', 'b', 'c'] # list_1[1:3]长度为2,但我们替换的序列长度为3
>>> x
[1, 'a', 'b', 'c', 4, 5]
如果对分片很熟悉,理解下面这个分片操作应该不会有难度:
>>> x = [1,2,3]
>>> x[1:1]
[]
截取索引1到索引1(不包括1)的元素,因为第二个索引的元素是不包括在返回的序列中的,而第一个索引的又是这个不应包括的元素,所以返回了空序列。
想象一下,list_1[1:1]
这个空序列是索引0和索引1之间的“空隙”,那为什么不是1和2之间呢?因为第二个索引1指定的是分片操作的终点,而分片又不包括终点,所以list_1[1:1]
当然是终点索引1之前的空隙了。
说到这里,读者们是否有想到什么清奇的操作呢? (⊙ˍ⊙)
借助这个看似奇怪的逻辑,我们可以插入一个序列 (°ー°〃)
>>> x = [1,2,3,4,5]
>>> x[1:1] = ['a','b','c']
>>> x
[1, 'a', 'b', 'c', 2, 3, 4, 5]
对上面的代码,我们可以理解成把一个空序列“替换”成一个新的序列。
既然可以插入,那么批量删除也是可以的:
>>> x = [1,2,3,4,5]
>>> x[1:4] = []
>>> x
[1, 5]
列表方法
append
append方法用于给列表在末尾追加一个元素:
>>> x = [1,2,3]
>>> x.append(4)
>>> x
[1, 2, 3, 4]
pop
pop方法用于移除指定索引(默认为-1,即尾部)的元素,并且返回这个元素:
>>> x = [1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0) # 移除索引为0的元素
1
提示:利用append和pop可以实现计算机中十分常见的一种数据结构——栈,栈是一种后进先出(LIFO,Last In First Out)的数据结构,push操作把元素放入栈,像堆叠积木一样,pop操作把顶层的“积木”移除,也就是最后放置的元素最先拿出,把列表当作栈,只需用append方法实现push操作,用pop方法实现pop操作。本系列教程不涉及更深的数据结构的学习,有兴趣的读者可以找找课程学习。
insert
insert方法可以把元素插入到指定的索引之前:
>>> x = [1,2,3]
>>> x.insert(1, 'a')
>>> x
[1, 'a', 2, 3]
使用分片赋值也是可以的:
>>> x = [1,2,3]
>>> x[1:1] = []
>>> x[1:1] = ['a']
>>> x
[1, 'a', 2, 3]
不过比起insert方法,分片赋值的方式可读性比较差
remove
remove方法用于移除列表中某个元素的第一个匹配项:
>>> x = [1,2,3,2,1,3]
>>> x.remove(2)
>>> x
[1, 3, 2, 1, 3]
>>> x.remove(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
相信大家也看到,如果元素不存在,程序将抛出错误
index
index方法用于返回某个元素的第一个匹配项的索引:
>>> x = [1,2,3,2,1,3]
>>> x.index(3)
2
同样的,如果元素不存在,则抛出错误:
>>> x.index(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 5 is not in list
count
count方法用于数数,数什么数?数元素出现的次数:
>>> x = [1,2,3,2,2,1]
>>> x = [1,2,[2],2,[1,2],2]
>>> x.count(2)
3
>>> x.count([1,2])
1
>>> x.count(11)
0
extend
extend方法用于附加一个序列至列表末尾:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
这个操作类似于序列相加操作:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a = a + b
>>> a
[1, 2, 3, 4, 5, 6]
但是使用extend方法效率比较高
我们还可以使用分片赋值的方式来实现与extend相同的效果:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a[len(a):] = b
>>> a
[1, 2, 3, 4, 5, 6]
但这比起extend,可读性变差了,所以还是使用extend方法比较好
reverse
reverse方法用于翻转列表:
>>> x = [1,2,3,4,5]
>>> x.reverse()
>>> x
[5, 4, 3, 2, 1]
如果仅仅想得到翻转后的列表,而不修改原列表,可以使用反向索引的分片来实现:
>>> x = [1,2,3,4,5]
>>> x[::-1]
[5, 4, 3, 2, 1]
如果需要反向迭代列表,还可以使用reversed函数创建一个反向迭代列表的迭代器:
>>> x = [1,2,3,4,5]
>>> for i in reversed(x):
... print(i)
...
5
4
3
2
1
>>> list(reversed(x)) # 还可以使用list函数来将迭代器转换成列表
[5, 4, 3, 2, 1]
sort
sort方法用于对列表进行排序。
>>> x = [3,2,4,8,6]
>>> x.sort()
>>> x
[2, 3, 4, 6, 8]
要注意的是这个方法是对原列表进行修改的,如果不想修改原列表而获取排序结果,可以使用sorted函数:
>>> x = [3,2,4,8,6]
>>> sorted(x)
[2, 3, 4, 6, 8]
sort方法还可以自定义排序的方式,比如把10
排在1
之前,把'a'
排在3
之前等等,在python2中只需提供一个参数,这个参数是一个比较函数,但是python3取消了这个参数,需要使用其它方式来自定义排序的方式,这里就不深入了解了,读者们可以去python官网查看文档学习。
元组
元组的基本操作和列表一样,但是元组是不可修改的,所以没有append、remove等修改序列的方法,只有count和index方法。
基本操作如下:
创建元组:
>>> tuple_1 = () # 空元组
>>> tuple_2 = tuple() # 空元组
>>> tuple_3 = 1,2,3
>>> tuple_4 = (1,2,3,4)
索引元素:
>>> x = (1,2,3,4)
>>> x[1]
2
count、index方法:
>>> x = (1,2,2,3,4,5,3,2)
>>> x.count(2)
3
>>> x.index(3)
3
还有分片、相加等通用序列操作,上节已介绍,这里不过多阐述
元组的意义在于:
- 元组可以作为字典等映射类型的键,而列表不可以,因为键必须是不可变的,元组刚好就是不可变类型,而列表是可变类型。
- 函数返回多个值的时候,其实就是返回了一个元组,我们必须对元组进行处理。
好了,本节到此结束,下期再见!
ヾ( ̄▽ ̄)Bye~Bye~
python教程(五)·列表与元组的更多相关文章
- python基础之列表list元组tuple
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...
- Python 学习笔记(1)Python容器:列表、元组、字典与集合
Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...
- python 变量、列表、元组、字典
python 变量.列表.元组.字典 1.python 变量赋值 2.ptython 列表 3.python 元组 4.python 字典 1. Python变量赋值 1.1变量的命名规 ...
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
- Python数据类型(列表和元组)
1.3 List(列表) 列表由一系列按特定顺序排列的元素组成. 在Python中,用方括号[ ]来表示列表,并用逗号来分隔其中的元素. 1.3.1 访问列表元素 在Python中,第一个列表元素的索 ...
- python 数据类型二 (列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- 第三章 Python容器:列表、元组、字典与集合
数据结构的分类依据?基本的"数组"在python中是列表, 数据结构的作用?容器,盛放数据,是由原子组成的分子.可以将一群数据进行整合.拆分.重排. 3.2 列表 列表是啥?顺 ...
- Python基础学习 -- 列表与元组
本节学习目的: 掌握数据结构中的列表和元组 应用场景: 编程 = 算法 + 数据结构 数据结构: 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符,或者其他数据 ...
- Python学习_03_列表、元组、字符串
列表.元组.字符串这些通过顺序访问的对象统称为序列. 序列的标准操作符 对于一般的序列对象,包括列表.元组.字符串,都具有以下的标准操作: 1. element [not] in seq判断一个元素是 ...
- Python数据基础--列表、元组、字典、函数
一.数据结构 列表(List)和元组 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内 ...
随机推荐
- 如何去掉HTML代码来获取纯文本?
public string TextNoHTML(string Htmlstring) { //删除脚本 Htmlstring = Regex.Replace(Htmlstring, @"& ...
- python之路——网络基础
你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据,你要怎么做 ...
- 打通版微社区(5):部署DZ3.2
参考官方帖子http://www.discuz.net/thread-3258186-1-1.html 这是第三方的帖子http://www.discuz.net/thread-3199850-1- ...
- ESS控制台发布新功能:创建多实例规格的伸缩配置
背景 原弹性伸缩ESS服务限定,生效的伸缩配置中只能对应一种实例规格,这样就会存在如果生效的配置中的实例规格的库存不足(高配实例规格通常更容易出现库存不足的情况)时, 用户配置好的伸缩规则以及伸缩组对 ...
- 安装kubernetes 环境
master: 10.6.2.170 #master节点兼做仓库 node-1: 10.6.2.171 node-2: 10.6.2.172 1.添加host解析 # cat << ...
- 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用
目录 一,安装宝塔面板(V 6.8) 二,使用宝塔安装 Docker,配置阿里云容器服务 三,安装 Rancher (Server) 四,管理 Rancher.添加集群 五,添加 Rancher 应用 ...
- lambdas vs. method groups
Update: Due to a glitch in my code I miscalculated the difference. It has been updated. See full his ...
- December 22nd 2016 Week 52nd Thursday
The best hearts are always the bravest. 心灵最高尚的人,往往也是最勇敢的人. Keep conscience clear, don't let too many ...
- 高可用web框架
nginx nginx简介 Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apa ...
- 无法执行程序。所执行的命令为 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /noconfig /fullpaths @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\b411ea32\b48a9fb\aun5r0xd.c
解决方案 将应用程序池进程模型中的标识设为“LocalSystem”即可.