黑马程序员Python课程学习笔记5

数据容器

Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。


数据容器根据特点的不同,如:

  • 是否支持重复元素
  • 是否可以修改
  • 是否有序,等

分为5类,分别是:

列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)


数据容器:list(列表)

基本语法:

列表内的每一个数据,称之为元素

  • 以[]作为标识
  • 列表内每一个元素之间用,逗号隔开

注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套。

列表的下标索引

正向索引:

(从0开始,依次递增)

语法:列表[下标索引]

eg.name_list[0]

反向索引:

(从-1开始,依次递减)

eg.name_list[-1]

嵌套列表的下标(索引)

语法:列表[下标索引][下标索引]

注意:

要注意下标索引的取值范围,超过范围无法取出元素,并且会报错。


列表的常用操作

在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同

列表的查询功能(方法)

  • 查找某元素的下标

功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表.index(元素)
index就是列表对象(变量)内置的方法(函数)

列表的修改功能(方法)

  • 修改特定位置(索引)的元素值:

语法:列表[下标]=值
可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)

  • 插入元素:

语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素

  • 追加元素方式1: 

语法:列表.append(元素),将指定元素,追加到列表的尾部

  • 追加元素方式2:

语法:列表.extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾部

  • 删除元素:

语法1:del 列表[下标]
语法2:列表.pop(下标)       
该方法可以得到删除元素的返回值 

  • 删除某元素在列表中的第一个匹配项

语法:列表.remove(元素)

  • 清空列表内容

语法:列表.clear()

  • 统计某元素在列表内的数量

语法:列表.count(元素)

  • 统计列表内,有多少元素

语法:len(列表)

总结:


list(列表)的遍历

列表的遍历-while循环

1.如何遍历列表的元素呢?
答:可以使用前面学过的while循环
2.如何在循环中取出列表的元素呢?
答:使用列表[下标]的方式取出
3.循环条件如何控制?
答:定义一个变量表示下标,从0开始,循环条件为 下标值<列表的元素数量

列表的遍历-for循环

while循环和for循环的对比

while循环和for循环,都是循环语句,但细节不同:

  • 在循环控制上:

1.while循环可以自定循环条件,并自行控制
2.for循环不可以自定循环条件,只可以一个个从容器内取出数据

  • 在无限循环上:

1.while循环可以通过条件控制做到无限循环
2.for循环理论上不可以,因为被遍历的容器容量不是无限的

  • 在使用场景上:

1.while循环适用于任何想要循环的场景
2.for循环适用于,遍历数据容器的场景或简单的固定次数循环场景
 


数据容器:tuple(元组)

元组一旦定义完成,就不可以修改

元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
 

注意:

1.元组只有一个数据,这个数据后面要添加逗号,如果不加逗号,则不是元组类型

eg.t2=('Hello',)

2.元组与列表一样支持下标索引,且用法一致

3.元组遍历与列表也一致

元组的相关操作

补充:

1.不可以修改元组的内容,否则会直接报错

2.可以修改元组内的list的内容(修改元素、增加、删除、反转等)


字符串

和其它容器如:列表、元组一样,字符串也可以通过下标进行访问
1. 从前向后,下标从0开始
2. 从后向前,下标从-1开始
注意:同元组一样,字符串是一个:无法修改的数据容器

字符串的常用操作

  • 查找特定字符串的(起始)下标索引值

语法:字符串.index(字符串)

  • 字符串的替换

语法:字符串.replace(字符串1,字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串,返回值是新的字符串哦

  • 字符串的分割

语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象

  • 字符串的规整操作(去前后空格)

语法:字符串.strip()

  • 字符串的规整操作(去前后指定字符串)

语法:字符串.strip(字符串)

注意,传入的是“12”其实就是:“1”和“2”都会移除,是按照单个字符。

  • 统计字符串中某个字符串的出现次数

语法:字符串.count(字符串)

  • 统计字符串的长度

语法:len(字符串)
字符串的遍历

同列表、元组一样,字符串也支持while循环和for循环进行遍历
字符串的特点
作为数据容器,字符串有如下特点:
1.只可以存储字符串
2.长度任意(取决于内存大小)
3.支持下标索引
4.允许重复字符串存在
5.不可以修改(增加或删除元素等)
6.支持while、for循环


序列

序列是指:内容连续、有序,可使用下标索引的一类数据容器
列表、元组、字符串,均可以视为序列。

序列的常用操作-切片
序列支持切片,即:列表、元组、字符串,均支持进行切片操作
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
1.起始下标表示从何处开始,可以留空,留空视作从头开始
2.结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
3.步长表示,依次取元素的间隔
    3.1  步长1表示,一个个取元素
    3.2  步长2表示,每次跳过1个元素取
    3.3  步长N表示,每次跳过N-1个元素取
    3.4  步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)


集合
集合的定义
基本语法:

# 定义集合字面量

{元素,元素,......,元素}

# 定义集合变量

变量名称 ={元素,元素,......,元素}

# 定义空集合

变量名称=set()

注意:

空集合变量输出结果为set()

集合的常用操作-修改
首先,因为集合是无序的,所以集合不支持:下标索引访问
但是集合和列表一样,是允许修改的。

  • 添加新元素

语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素

  • 移除元素

语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素

  • 从集合中随机取出元素

语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除

  • 清空集合

语法:集合.clear(),功能,清空集合
结果:集合本身被清空

  • 取出2个集合的差集

语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变

  • 消除2个集合的差集

语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变

  • 2个集合合并

语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合

结果:得到新集合,集合1和集合2不变

  • 统计集合元素数量

语法:len(集合)

集合的遍历
集合不支持下标索引,不能用while循坏,可以用for循环

集合的特点
1.可以容纳多个数据
2.可以容纳不同类型的数据(混装)
3.数据是无序存储的(不支持下标索引)
4.不允许重复数据存在
5.可以修改(增加或删除元素等)
6.支持for循环
 


字典

字典的定义
字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:

字典数据的获取
字典同集合一样,不可以使用下标索引,但是字典可以通过Key值来取得对应的Value
字典的嵌套
字典的Key和Value可以是任意数据类型(Key不可为字典)
注意:

字典内Key不允许重复,重复添加等同于覆盖原有数据
字典的常用操作

  • 新增元素

语法:字典[Key]=Value,结果:字典被修改,新增了元素

  • 更新元素

语法:字典[Key]=Value,结果:字典被修改,元素被更新
注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值

  • 删除元素

语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除,并且返回被删Value值

  • 清空字典

语法:字典.clear(),结果:字典被修改,元素被清空

  • 获取全部的key

语法:字典.keys(),结果:得到字典中所有Key

  • 统计字典元素数量

语法:len(字典)

遍历字典

字典的特点
1.可以容纳多个数据
2.可以容纳不同类型的数据
3.每一份数据是KeyValue键值对
4.可以通过Key获取到Value,Key不可重复(重复会覆盖)
5.不支持下标索引
6.可以修改(增加或删除更新元素等)
7.支持for循环,不支持while循环
 


数据容器分类

数据容器特点对比

数据容器的通用统计功能

1.len(容器)统计容器的元素个数
2.max(容器)统计容器的最大元素

3.min(容器)统计容器的最小元素

通用类型转换

容器通用排序功能
通用排序功能

正向排序:

sorted(容器)

反向排序:
sorted(容器,[reverse=True])
将给定容器进行排序
 


ASCII码表
在程序中,字符串所用的所有字符如:
1.大小写英文单词
2.数字
3.特殊符号(!、\、|、@、#、空格等)
都有其对应的ASCII码表值

每一个字符都能对应上一个:数字的码值
字符串进行比较就是基于数字的码值大小进行比较的。
字符串比较
字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大。
 

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值