- 序列是一块用来存放多个值的内存空间。python中常用序列结构有列表、元组、字符串、集合等。
对象的方法:对象名.方法
内置函数:直接使用
非内置函数:import 模块名 使用:模块名.函数名
列表
- 列表是python的内置可变序列,是包含若干元素的有序连续内存空间。放在 [ ] 中,相邻元素之间用逗号分隔开。(效率较低)
- 同一个列表中元素的类型可以不相同,可以同时包含整数、实数、字符串、等基本类型,也可以是列表元组、字典、集合以及其他自定义类型对象。
方法 | 说明 | 案例 | |
append(x) | 对象 | 将元素x添加到列表尾部 追加元素 原地修改 | list.append(9) |
extend(iterable) | 对象 | 将可迭代对象iterable中所有的元素添加到列表尾部 扩展列表 原地操作 | a.extend([7,8,9]) |
insert(index,x) | 对象 | 在列表指定位置index处添加元素x 插入 原地操作 可以任意位置插入但会让插入位置所有元素位置移动影响处理速度并使一些元素下标改变 | list.insert([11,13]) |
remove(x) | 对象 | 在列表中删除首次出现的指定元素 移除 | list.remove(3) |
pop([index]) | 对象 | 删除并返回列表对象指定位置的元素,默认为最后一个元素 | list.pop() list.pop(3) |
clear() | 对象 | 删除列表对象中所有的元素,但保留列表对象 清除 | |
index(x) index(x,[star,[stop]]) | 对象 | 返回第一个值为x的元素的下标,若不存在值为x的元素则抛出异常 star默认是0stop默认是列表长度 | list.index(7) |
count(x) | 对象 | 返回指定元素x在列表中出现的次数 计数 | list.count(5) |
reverse() | 对象 | 逆序排序 | |
reversed() | 内置函数 | 不对源进行修改返回一个逆序后新的迭代对象 | newList = |
sort(key=None,reverse=False) | 对象 | 对列表元素进行原地排序 | list.sort() |
sorted() | 内置函数 | 内置函数对列表进行排序返回新列表,并不修改原列表 | sorted(list) |
copy() | 对象 | 返回列表对象的浅复制 | |
del list[1] | 内置函数 | 删除指定位置上的元素 | del list[1] |
copy.deepcopy(list) | 非内置函数 | 深复制、递归复制 两个列表完全独立互不影响 | bList = copy.deepcopy(aList) |
random.shuffle(list) | 非内置函数 | 随机打乱顺序 | random.shuffle(list) |
random.randint(x,y) | 非内置函数 | 返回x,y之间任意整数 | random.randint(50,100) |
元组
字典
集合
- Python采用的是基于值的自动内存管理方式,当对象值修改时,并不是直接修改变量的值而是使变量指向新的值,这对所有类型的变量都是一样的。id(变量)来验证
- 使用乘法*来扩展元素,扩展时并不创建元素的复制,而是创建已有元素的引用,因此修改一个时相应的引用也将改变。
- 使用del
- 切片使用于列表、元组、字符串、range对象等类型,[star:stop:step] star表示开始位置(默认为零),stop表示切片截止(但不包含)位置(默认为列表长度)step表示切片步长默认为1,步长省略可以顺便省略最后一个冒号。可以使用切片来截取列表中的任何一部分,得到一个新列表,也可以通过切片来修改和删除列表中的部分元素,甚至可以通过切片操作作为列表对象增加元素。(步长为负数时表示从右往左切)。eg:增:list[len(list):] = [9] 删:list[:3] = [] 改:list[:3] = [1,2,3] 查:list[::]
- 切片返回的是浅复制。所谓浅复制是指生成一个新的列表,并把原列表中所有的元素的引用都复制到新列表中。深复制(递归复制)就是不论元对象如何改变,新对象都不受影响。
- all()测试列表、元组等序列对象以及map对象、zip对象等类似对象中是否所有元素都等价于True。
- any()测试序列或可迭代对象中是否存在等价于True的元素
- len(列表):返回列表中的元素个数,同样适用于元组、字典、集合、字符串、range对象
- max(列表)、min(列表)返回列表中最大或最小元素,这两个函数支持使用key参数指定排序规则
- sum(列表):求和
- zip(*iterables):将多个可迭代对象对应位置的元素组合为元组,并返回包含这些元组的zip对象
- enumerate(列表):枚举列表、字典、元组或字符串中的元素,返回枚举对象,枚举对象中每个元素是包含下标和元素值的元组。该函数对字符串、字典同样有效
- 列表推导式: 表达式 for 变量 in 范围/条件
- 元组属于不可变序列放在一对()中。
- 只包含一个元素的元组,需要在元素后面加一个,
- tupe()函数将列表、字符串、字典、集合、map对象等其他类型可迭代对象转换成元组。
- 可以使用del命令删除整个元组对象,不能只删除元组的部分元素。
- 序列解包:x,y,z = 1,2,3 或 v_tuple = (False,3.5,’exp’) x,y,z = v_tuple a,b = b,a 交换ab的值
- 序列解包也可用于字典和列表,但在对字典使用时,默认是对字典的 键 操作,需要对 键:值 操作,需要使用字典的item()方法说明。如果需要对值操作则需要使用value()方法指定。
- 字典是包含键值对的无序可变序列,放在 { } 中
- 使用内置函数dict()通过已有数据创建字典 eg:dictionary = dect(zip(keys,values))
- 使用字典的键作为下标来访问值,若值不存在则抛出异常。安全的访问方式应该是使用字典对象的get()方法获取指定键的值,不存在则返回指定值或返回None
- 另外使用item()方法可以返回字典的键:值对,使用字典的keys()方法可以返回字典的键,使用values()方法可以返回字典的值。
- 以指定的键作为下标的时候为元素赋值时若该键存在则修改,不存在则创建。
- 使用update()方法将另个字典的键:值添加到当前字典对象,若键中有重的则以另一个为准更新当前字典中的值。
- 删除字典元素时可以使用del删除指定键的元素,也可以使用clear()删除字典中的所有元素,还可以使用pop()方法删除并返回指定键的元素,还可以使用对象地popitem()方法删除并返回一个字典中的元素。
- 集合是无需可变的容器对象,使用 { } 作为定界符,同一个集合中的元素之间不许重复,集合中的每个元素都是唯一的。
- 使用set() 函数将列表元组等其他可迭代对象转为集合,如果原来的数据中存在重复元素则在转换的额时候只保留一个。
- 使用集合对象的add()方法增加一个元素,元素以存在时自动忽略
- 对象的pop()方法弹出并删除一个元素
- 对象的remove()方法直接删除指定元素。
- 对象的clear()方法清空集合中的所有元素
- del删除整个集合
- 集合支持交、并、差、子集
- 并集 |
- 交集 &
- 差集 –
- 对称差集 ^
- 比较集合大小 x是y的子集: x < y