python内置数据结构教程_python课程第二周 内置数据结构——列表和元组
5种内置数据结构:列表、元组、字典、集合、字符串。列表、字典、字符串三种被称为线性结构。针对线性结构的操作有:切片、封包和解包、成员运算符、迭代。
针对数据结构的操作有解析式:解析式分为列表解析、生成器解析、集合解析和字典解析。
后面三种是Python3.x特有的。
基本框架如下:
一、列表:Python中最具灵活性的有序集合对象类型
列表可包含任何种类的对象:数字、字符串、字典、集合甚至其他列表,这个特性称为异构。还具有可变长度和任意嵌套的特性,属于可变长度序列。
(1)列表的初始化,有两种方式,第一种使用list()函数,第二种直接使用空列表赋值:>>>lst=list()
>>>lst=[1,2,3]
(2)列表元素的访问,主要通过列表的下标和索引。元素的下标从0开始。如果给出的下标超出下标范围,会给出IndexError错误。也支持逆向访问列表内部元素,下标从-1开始,同时支持序列的分片操作。>>>lst[0] 访问第一个元素
1
>>>lst[-1] 访问最后一个元素,逆序访问
3
>>>lst[2] 访问最后一个元素
3
>>>lst[0:] 访问第一个到最后一个元素
[1,2,3]
(3)列表的方法:
增
append(object) #给列表添加一个对象object,返回值是None
insert(index,object) #给列表添加一个对象object,但是可以根据index确定插入位置,返回值None
extend(iterable)#从迭代器中添加元素到列表中
下面是几个示例:lst=[5,2,10]
索引是在列表索引范围内,正常插入:>>>lst.insert(0,7)
>>>lst
[7,5,2,10]
索引超出列表的范围,在最后插入:>>>lst.insert(100,13)
>>>lst
[7,5,2,10,13]
索引使用负值且在正常索引范围内,从后往前插入:>>>lst.insert(-1,12)
>>>lst
[7,5,2,10,12,13]
索引使用负值但是超出索引范围,从最开始插入:>>> lst.insert(-100,20)
>>> lst
[20, 7, 5.2, 10, 12, 13]
从迭代器中添加元素>>>lst.extend([1,2,3])
>>>lst
[20, 7, 5.2, 10, 12, 13,1,2,3]
删
pop(index) #根据索引index将列表中的某个元素移除并返回这个元素,如果没有给出index,返回最后一个元素。如果列表为空或者索引超出范围,则给出IndexError错误。lst=[5,2,10]
>>>lst.pop()
10
>>lst
[5,2]
>>>lst.pop(0)
5
>>>lst
[2]
>>>lst.pop(-1)
2
>>>lst
[]
remove(value) #根据value值删除list中的一个元素value,如果value不存在,会提示ValueError,返回值None>>>lst=[5,2,10]
>>>lst.remove[10]
>>>lst
[5,2]
clear() #清除list中所有的元素,返回值None。>>>lst.clear()
>>>lst
[]
del L[k]
del L[i:j] 根据索引删除指定值或者删除某个范围内的值>>> lst=[1,2,3,4,5,6]
>>> del lst[2]
>>> lst
[1, 2, 4, 5, 6]
>>> del lst[0:2]
>>> lst
[4, 5, 6]
改
reverse() #将list中的元素反转
sort(key=None, reverse=False) #将list中的元素有序排列,reverse为True时,将list逆序排列,key是个函数对象,使用该函数对list进行排序。排序后返回None。
L[k] = n #根据列表索引来修改对应位置的值
示例如下:>>>lst= [5, 2, 10]
>>>sort(lst)#排序
>>>lst
[2,5,10]
>>>reverse(lst) #倒转
>>>lst
[10,5,2]
>>>lst[0] = 100#索引改值
>>>lst
[100, 2, 10]
查
index(value,[start,[stop]]) #根据value值,返回start和stop索引范围内第一次出现value的索引,value不存在时返回ValueError。>>>lst= ['a','b','c','d','e']
>>>lst.index('a')
0
>>>lst.append('b')
>>>lst.index('b',0,4)
1
count(value) #根据value值返回列表中value的个数,返回值是整数>>>lst.count('b')
2
len(object,/) #返回列表中的元素个数>>>len(lst)
6
其他方法
copy() #返回list的一个副本。
切片操作
基本格式:seq[start:stop:step],输出的内容是[start,stop),step指的是隔几个数取一个值,看下面示例。>>>lst=[1,2,3,4,5,6,7,8]
>>>lst[0:8]
[1,2,3,4,5,6,7,8]
>>>lst[0:8:2]
[1,3,5,7]
因为一般情况下切片操作是从左往右,因此start一定要小于stop,否则只能得到一个空数组。>>>lst[7:5]
[]
特殊情况下,例如step<0时,例如:
当start>stop时,step=-1,输出(stop,start]>>>lst[5:1:-1]
[6,5,4,3]
当start或stop超出索引范围时(step>0),分为4种情况:
1. start超出索引,stop没有超过索引,同时start的绝对值大于列表长度时,从索引0开始输出一直到索引stop-1>>>lst=[1,2,3,4,5,6,7,8] #列表长度为8
>>>lst[-10:5]
[1,2,3,4,5]
2. start超过索引,stop没有超过索引,同时start的绝对值小于列表长度时,取值范围是[len(lst)+start, stop]>>>lst[-5:5] #取值范围是[8-5,5],即[3,5]
[4,5]
2. stop超出索引,start没有超过索引从start开始输出,直到最后一个元素停止>>>lst[3,100]
[4,5,6,7,8]
3. 当start和stop同时超出索引时,start绝对值大于数组长度,输出seq第一个到最后一个元素。>>> lst[-100:100]
[1, 2, 3, 4, 5, 6, 7, 8]
4. 当start和stop同时超出索引时,start绝对值小于数组长度时,取值范围是[len(lst)+start:]>>>lst[-5:100]
[4,5,6,7,8]
切片操作支持省略start或stop:
当start省略时,从索引0开始输出,到stop-1停止>>>lst[:5]
[1,2,3,4]
当stop省略时,从start开始,到最后一个元素停止>>>lst[3:]
[4,5,6,7,8]
当start和stop都省略时,输出seq所有元素。lst[:]
[1, 2, 3, 4, 5, 6, 7, 8]
元组(tuple):不可变的数据结构,位置有序的对象的集合。
通常写成圆括号中的一系列项,虽然元组不支持任何方法调用,但具有列表的大多数属性。通过偏移和索引存取
属于不可不序列类型
固定长度,不能伸长或缩短,异构,可以包含其他复合对象,支持嵌套。
对象引用的数组,对元组进行索引操作的速度相对较快。
1. 元组的定义t=() #空元组
t=tuple() #空元组
t=(1,2,3)#3个元素的元组,索引只能用来访问元素
t=(1,) #定义单个元素的元组时,需要在元素后面加个逗号,否则t就是一个数字。
2. 元组的方法t.count(value) #返回元组内某个元素个数
t.index(value,[start,[stop]]) #返回元素value第一次出现的索引
t[i]、t[i:j] #根据索引来访问元素,根据分片和长度来访问元素
t1+t2、t * 3 #合并和重复
*元组的不可变性只有一层,即元组的元素是单层或不可变元素时,例如数字、字符,元组元素不可变,但元组的元素是多层可变元素时,该元素自身不能被改变,而元素内部值可变,例如列表,下面请看示例:
1. 元组元素是数字和字符串时>>>t = ( 1, 'test', 4)
>>> t[0] = 'a'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment #元素不可变
>>> t[1] = 'TEST'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment #元素不可变
2. 元组元素是数字、列表时>>>t = (1, [2, 3], 4)
>>> t[1] = [4, 5]
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment #元组元素不可变
>>> t[1][1] = 5
>>> t
(1, [2, 5], 4) #列表仍然可变
元组通常用于处理具有固定关系的情况,在某些要求不可变内容的情形下应用。
本周的主要知识点如下:列表的初始化、基本的增删改查方法;
列表的分片处理
元组的初始化和基本方法
python内置数据结构教程_python课程第二周 内置数据结构——列表和元组相关推荐
- 【中英】【吴恩达课后测验】Course 3 -结构化机器学习项目 - 第二周测验
[中英][吴恩达课后测验]Course 3 -结构化机器学习项目 - 第二周测验 - 自动驾驶(案例研究) 上一篇:[课程3 - 第一周测验]※※※※※ [回到目录]※※※※※下一篇:[课程4 -第一 ...
- python爬虫基础项目教程_Python爬虫入门项目
Python是什么 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 创始人Guido van Ros ...
- python做exe开发教程_python做exe开发教程
python做exe开发教程内容摘要 python做exe开发教程其他方法无效时可用免疫抑制剂,交通部监理员教程证,6.客户端的异常测试.6.机费用械性能(1)抗拉试验:酒店入职教程内容,6.9l-8 ...
- python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...
感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...
- python基础到实践教程_Python从入门到实践案例教程(21世纪高等学校计算机教育实用规划教材)...
目录 第1章 Python概述 1.1 计算机及程序设计语言概述 1.1.1 计算机发展史 1.1.2 计算机体系结构 1.1.3 计算机系统组成 1.1.4 程序设计语言 1.2 Python语言特 ...
- python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典
Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...
- 吴恩达深度学习 | (15) 结构化机器学习项目专项课程第二周学习笔记
课程视频 第二周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第三部分结构化机器学习项目专项的第二周课程:机器学习(ML)策略(2) . 目录 1. 进行误差分析 2. 清除标注错误 ...
- python程序设计基础实战教程_Python程序设计基础实战教程
第1章 Python概述 1.1 Python的诞生 1.2 Python的特点 1.3 Python能做什么? 1.3.1 Python常规应用 13.2 Python在大数据时代下的应用 1.4 ...
- Python课程第二周笔记及作业练习
Python第二周 第二周笔记 作业 练习 第二周笔记 机器语言:代码直接执行,与CPU型号有关: 汇编语言:有助记符,汇编器,与CPU型号有关: 高级语言:接近自然语言,编译器或解释器,与CPU型号 ...
最新文章
- matlab dfp法,DFP算法及Matlab程序.docx
- mkdir()提示No such file or directory错误的解决方法
- 【OpenGL】四、Visual Studio 2019 配置 GitHub ( 从 GitHub 上克隆项目 )
- SQL server Cannot find one or more
- MFC ListCtrl和IP控件的使用杂记
- 第10章-定位、层级关系
- iOS进阶之正则表达式
- 简洁精美的图片在线压缩网站html源码
- World Wind Java开发之二 使用Winbuilders设计图形用户界面(转)
- linux子进程中断信息码6,Linux入门学习——进程
- 联众打码写滑动_自己写了一个答题的软件现在分享一下(在分享一下联众打码源码调用) _ 综合讨论 - 按键精灵论坛...
- Ubuntu18.04安装英伟达显卡驱动
- springboot整合阿里云oss上传文件(图片或视频)
- 简易个人所得税计算器
- Windows和Linux(Ubuntu)查看电脑主机型号和序列号的命令
- python3 的 md5加密
- rep论文阅读2:ResRep_Lossless CNN Pruning via Decoupling Remembering and Forgetting
- Navicat Premium 15的使用
- 解决idel连接mysql数据库报错问题
- 思岚科技CES展发布新品“SLAM Cube” 构建智能移动机器人So easy
热门文章
- java if else嵌套,减少的 if else 嵌套 可以使用java 8的Consumer
- mysql 6.3 入门_Mysql 入门小练习
- 个人okr_我如何通过个人OKR完成了一个亿的小目标
- Java 中 PO 与 VO 的区别
- oracle数据库从关闭到启动,Oracle数据库的启动和关闭详细过程
- c语言中空格字符怎么表示_漫画:腾讯面试题,请实现把字符串中的空格替换为“%20”...
- cdialog创建后马上隐藏_都2020了,你还没用上这些Windows的“隐藏神技能”?
- 高中计算机会考优秀网,北京高三体育会考成绩255分为优秀
- 扫描全能王文件上传不了服务器,扫描全能王如何备份JPG 文件备份JPG办法
- 不死神兔c语言20月,不死神兔问题(斐波那契数列)