列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
注意:
列表可以一次存储多个数据
,且可以为不同的数据类型,支持嵌套
。
或者,可以反向索引,也就是从后向前:从-1开始,依次递减(-1、-2、-3…)
如图,从后向前,下标索引为:-1、-2、-3,依次递减:
查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError。
语法:列表.index(元素)
修改特定位置(索引)的元素值
语法:列表[下标] = 值
可以使用如上语法,直接对指定下标(正向、反向下标均可)的值进行重新赋值(修改)。
元组同列表一样,都是可以封装多个、不同类型的元素在内。但最大的不同点在于:元组一旦定义完成,就不可修改
。所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了。
元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
语法如下:
注意:元组只有一个数据,这个数据后面要添加逗号
。
不可以修改(增加或删除元素等)
多数特性和list一致,不同点在于不可修改的特性。
和其它容器如:列表、元组一样,字符串也可以通过下标进行访问。从前向后,下标从0开始,从后向前,下标从-1开始
。
作为数据容器,字符串有如下特点:
只可以存储字符串
不可以修改(增加或删除元素等)
序列是指:内容连续、有序,可使用下标索引的一类数据容器
。列表、元组、字符串,均可以可以视为序列。
序列的典型特征就是:有序并可用下标索引,字符串、元组、列表均满足这个要求。
序列支持切片,即:列表、元组、字符串,均支持进行切片操作。
切片:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列。
起始下标和结束下标也要反向标记
)注意:
此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)。
数据是无序存储的(不支持下标索引)
不允许重复数据存在
字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:
```python
scores = {'zhangsan':98, 'lisi':89, 'maishu':96}
for name in scores:
print(f'{name}:{scores[name]}')
```
默认情况下,循环字典,`其实是循环的字典的keys`,所以name就是一个个key。如果需要访问value,`可以通过scores[name]`来取用。
和下面效果一样:
for name in scores.keys():
print(f'{name}:{scores[name]}')
for name, score in scores.items():
print(f'{name}:{score}')
scores = {'zhangsan':98, 'lisi':89, 'maishu':96}
for i, (name, score) in enumerate(scores.items()):
print(i, name, score)
先用items()
函数转成元组的列表,再使用enumerate
函数加上序号。
注意,因为是元组,for的变量中一定要加上括号:i, (name, score)
。Python只会做简单的自动开包,这里还有个变量i,它就不会自动开包,它只是单个变量元组,需要加上括号。
每一份数据是KeyValue键值对
可以通过Key获取到Value,Key不可重复(重复会覆盖)
可修改、可重复的存储场景
不可修改、可重复的存储场景
一串字符串的存储场景
去重存储场景
可用Key检索Value的存储场景
使用方式上的不同, 函数有4中常见参数使用方式:
注意:
传递的参数和定义的参数的顺序及个数必须一致。
关键字参数:函数调用时通过“键=值”形式传递参数
。
作用: 可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。
注意:
函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。
缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用
)。
作用: 当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值
。
注意:
函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值。
不定长参数:不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.
作用: 当调用函数时不确定参数个数时, 可以使用不定长参数。
不定长参数的类型:
注意:
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型
,这就是位置传递。
注意:
参数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典
.
语法如下:
lambda 传入参数:函数体(一行代码)