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课程第二周 内置数据结构——列表和元组相关推荐

  1. 【中英】【吴恩达课后测验】Course 3 -结构化机器学习项目 - 第二周测验

    [中英][吴恩达课后测验]Course 3 -结构化机器学习项目 - 第二周测验 - 自动驾驶(案例研究) 上一篇:[课程3 - 第一周测验]※※※※※ [回到目录]※※※※※下一篇:[课程4 -第一 ...

  2. python爬虫基础项目教程_Python爬虫入门项目

    Python是什么 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 创始人Guido van Ros ...

  3. python做exe开发教程_python做exe开发教程

    python做exe开发教程内容摘要 python做exe开发教程其他方法无效时可用免疫抑制剂,交通部监理员教程证,6.客户端的异常测试.6.机费用械性能(1)抗拉试验:酒店入职教程内容,6.9l-8 ...

  4. python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...

    感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...

  5. python基础到实践教程_Python从入门到实践案例教程(21世纪高等学校计算机教育实用规划教材)...

    目录 第1章 Python概述 1.1 计算机及程序设计语言概述 1.1.1 计算机发展史 1.1.2 计算机体系结构 1.1.3 计算机系统组成 1.1.4 程序设计语言 1.2 Python语言特 ...

  6. python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典

    Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...

  7. 吴恩达深度学习 | (15) 结构化机器学习项目专项课程第二周学习笔记

    课程视频 第二周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第三部分结构化机器学习项目专项的第二周课程:机器学习(ML)策略(2) . 目录 1. 进行误差分析 2. 清除标注错误 ...

  8. python程序设计基础实战教程_Python程序设计基础实战教程

    第1章 Python概述 1.1 Python的诞生 1.2 Python的特点 1.3 Python能做什么? 1.3.1 Python常规应用 13.2 Python在大数据时代下的应用 1.4 ...

  9. Python课程第二周笔记及作业练习

    Python第二周 第二周笔记 作业 练习 第二周笔记 机器语言:代码直接执行,与CPU型号有关: 汇编语言:有助记符,汇编器,与CPU型号有关: 高级语言:接近自然语言,编译器或解释器,与CPU型号 ...

最新文章

  1. matlab dfp法,DFP算法及Matlab程序.docx
  2. mkdir()提示No such file or directory错误的解决方法
  3. 【OpenGL】四、Visual Studio 2019 配置 GitHub ( 从 GitHub 上克隆项目 )
  4. SQL server Cannot find one or more
  5. MFC ListCtrl和IP控件的使用杂记
  6. 第10章-定位、层级关系
  7. iOS进阶之正则表达式
  8. 简洁精美的图片在线压缩网站html源码
  9. World Wind Java开发之二 使用Winbuilders设计图形用户界面(转)
  10. linux子进程中断信息码6,Linux入门学习——进程
  11. 联众打码写滑动_自己写了一个答题的软件现在分享一下(在分享一下联众打码源码调用) _ 综合讨论 - 按键精灵论坛...
  12. Ubuntu18.04安装英伟达显卡驱动
  13. springboot整合阿里云oss上传文件(图片或视频)
  14. 简易个人所得税计算器
  15. Windows和Linux(Ubuntu)查看电脑主机型号和序列号的命令
  16. python3 的 md5加密
  17. rep论文阅读2:ResRep_Lossless CNN Pruning via Decoupling Remembering and Forgetting
  18. Navicat Premium 15的使用
  19. 解决idel连接mysql数据库报错问题
  20. 思岚科技CES展发布新品“SLAM Cube” 构建智能移动机器人So easy

热门文章

  1. java if else嵌套,减少的 if else 嵌套 可以使用java 8的Consumer
  2. mysql 6.3 入门_Mysql 入门小练习
  3. 个人okr_我如何通过个人OKR完成了一个亿的小目标
  4. Java 中 PO 与 VO 的区别
  5. oracle数据库从关闭到启动,Oracle数据库的启动和关闭详细过程
  6. c语言中空格字符怎么表示_漫画:腾讯面试题,请实现把字符串中的空格替换为“%20”...
  7. cdialog创建后马上隐藏_都2020了,你还没用上这些Windows的“隐藏神技能”?
  8. 高中计算机会考优秀网,北京高三体育会考成绩255分为优秀
  9. 扫描全能王文件上传不了服务器,扫描全能王如何备份JPG 文件备份JPG办法
  10. 不死神兔c语言20月,不死神兔问题(斐波那契数列)