list(列表)
定义
- 定义列表:变量名=[val1,val2,…,valn],其中值可以是任意类型的数据或者容器;空数组:变量名=[] 或者 变量名=list()
- 列表为每个元素分配下标,所以可以使用下标直接随机访问数据,同时列表有增删查改操作
操作
增
函数 | 说明 |
---|
list.append(val) | 将括号中的数据添加到列表末尾 |
list.extend(val) | 合并列表,将括号中的列表添加到列表中,按序添加 |
list.insert(下标,值) | 将括号中的值添加到列表指定下标处 |
删
函数 | 说明 |
---|
list.pop() | 默认删除末尾的元素,并返回此值 |
list.pop(下标) | 根据下标删除,并返回此值 |
del list[下标] | 根据元素下标删除,无返回值 |
list.clear() | 清空列表 |
查
函数 | 说明 |
---|
list[下标] | 根据下标查找值,引用该值 |
list.index(值) | 根据值查找其在列表中的位置(下标),并返回该下标,若有多个该值,则返回第一个索引 |
list.count(值) | 统计该值在列表中出现的次数并改回统计结果 |
len(list) | 计算列表长度,并返回该长度值 |
max(list)、min(list) | 查询列表最大值、最小值,并返回该值(但列表中的值必须是同类型的数据,例如:都是数字,或者都是字母,或者都是列表或者都是元组) |
改
函数 | 说明 |
---|
list[下标]=值 | 根据下标直接修改 |
list[切片]=值 | 这种操作会将指定的列表片段更换指定的值,但是值必须是一个可迭代对象,并且切片长度可以和可迭代对象的长度不一致,因此,这种操作也有可能改变列表的长度 |
判断
函数 | 说明 |
---|
in或者not in | 判断元素是否存在于列表中 |
脚本操作
函数 | 说明 |
---|
list1+list2 | 将两个列表组合成一个列表 |
list*num | 将一个列表中的元素重复num次 |
排序
函数 | 说明 |
---|
list.reverse() | 反转列表元素,对原列表直接操作,返回空值 |
list.sort() | 对原列表进行由小到大排序,属于直接操作,返回空值 |
sorted(list) | 对参数列表进行排序,原列表不会变化,会返回一个排序后的新列表 |
切片
函数 | 说明 |
---|
list[num1:num2(:num3)] | num1 表示起始位置,num2 表示终止位置,num3 表示步长;默认值:num1 = 0 num2 =列表长度,num3 = 1 ;num2 位置元素不会取到 |
tuple(元组)
定义
- 变量名=tuple()
- 元组是一个按添加顺序排列的容器,可按下标取值
- 元组=操作受限的列表。元组不可增、删、改。但可以查找。
与列表的转化
set(集合)
定义
- set是一个无序,无重复元素的集合,可以用来过滤重复元素
- 定义空集合:a=set();定义集合:a={val1,val2,…valn},注意不是 {} ,若是 a={} 则是创建空字典
- 集合中不能存储不能进行哈希计算的数据类型,如列表、字典、甚至集合都不能存放在集合中,可以存放的数据类型有如数值、字符串、布尔、空值和元组等
操作
增
函数 | 说明 |
---|
set.add(值) | 向集合中添加一个元素 |
set.update(值) | 值一个可迭代的内容,一一加入,例如列表、元组、字典、集合、字符串。注意:如果添加字典,则只会将 键 添加进去;若果是字符串,则会将每一个字符逐个加入 |
删
函数 | 说明 |
---|
set.remove(值) | 移除指定的值。若值不存在,会报错 |
set.discard(值) | 同上,但值不存在不会报错 |
set.pop() | 随机删除一个 |
set.clear() | 清空集合 |
其他操作
函数 | 说明 |
---|
| | 并集 |
& intersection | 交集 |
- different | 差集 |
in | 判断 |
union | 联合,例如;A.union(B) 合并A,B 并返回合并后的集合 |
issubset | 子集,例如:A.issubset(B) A是B的子集,返回布尔值 |
issuperset | 父集,例如:A.issuperset(B) A是B的父级,返回布尔值 |
dict(字典)
定义
- 定义空字典:a={},定义字典:a={key1:value1,key2:value2,key3:value3,…,keyn:valuen}
- 使用大括号括起来,使用键值对进行存储,具有极快的查找速度,只能根据 键 查找对应的值
- 键 (key)必须是不可变类型:如字符串,数字,元组。键 必须是唯一的,不可以重复
- 值可以是任意类型的数据或容器
- 键值对的存储顺序是无序的,即:存放顺序与放入顺序是没有关系的
操作
增/改
字典[键]=值 | 若字典里已经有该键值,则会将原有的覆盖,即实现了字典的修改;若字典里没有该键,则会添加改键并赋值 |
---|
删
函数 | 说明 |
---|
字典.pop(键) | 将该键对应的值删除并返回该值 |
del 字典[键] | 根据键删除值,返回空类型(无返回值) |
字典.popitem() | 随机删除一个 |
字典.clear() | 清空字典 |
查
函数 | 说明 |
---|
字典[键] | 根据键查找值,并返回 |
字典.get(键,[默认值]) | 通过字典中的 get 方法查找对应的键值,如果没有该键值则返回None或者自己设置的默认值 |
len(字典) | 求字典长度,一个键值对占据一个长度 |
str(字典) | 字典转化为字符串显示 |
dict.keys() | 把字典中的所有键值,收集为一个列表并改回该列表,但该列表类型为:class’dict_keys’,和 list 类型不一样 |
dict.values() | 把字典中的所有值,收集为一个列表并返回该列表,但其类型为:class’dict_values’ |
dict.items() | 把字典中的所有键值对,收集为一个列表并返回该列表,但其类型为:class’dict_items’ |
以上三中类型是字典中的内置函数,返回的数据并不是严格意义上的列表,因为返回的数据无法使用列表的内置方法 | |
判断
函数 | 说明 |
---|
in 或者not in | 判断字典键、值或者键值对是否在字典中 A in dict |
遍历
1、for key in dict.keys():
2、for key in dict():
3、for k,v in dict.items():
其他
函数 | 说明 |
---|
dict,copy() | 返回一个复制的字典,内容一样,地址不同 |
dict.fromkeys(seq,[,values]) | 以 seq 序列中的元素作为键,values为值,创建一个新的列表 |
dict.setdefault(key,default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default 如果键在字典中,返回这个键所对应的值;如果键不在字典中,向字典中插入这个键,并且以default为这个键的值,并返回 default。default的默认值为None |
dict.update(dict2) | 把 dict2 中的键值对更新至 dict 中; 相当于列表中的 extend 函数 |
注意:
正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。
>>> key = [1, 2, 3]
>>> d[key] = 'a list'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'