1、元组
元组是一个固定的长度、不可变的对象序列。创建元组的最简单的方法就是用逗号分隔序列值。
你可以使用tuple函数将任意序列或迭代器转换为元组
虽然元组中存储的对象其自身是可变的,但是元组一旦创建,其各个位置上的对象是无法修改的。
如果元组中的某一对象是可变的,可以在内部进行修改
元组的拆包
2、列表
增加或移除数据
append:将元素添加到列表的尾部
insert:将元素添加到指定的位置
pop:将特定位置元素删除并返回该元素
remove:定位到第一个满足要求的元素并移除他
连接和联合列表
排序
sort()函数:原来基础上排序,未建立新的
sorted()函数:建立一个已排序列表
二分搜索和已排序列表的维护
内建的bisect模块
实现了二分搜索和已排序列表的插值。bisect.bisect
会找到元素应该被插入的位置,并保持元素排序,为bisect.insort
将元素插入到相应的位置。
声明:bisect
并不会检查列表是否已经排好序,因此对未排序的列表使用该模块虽然不会报错,但是会产生不正确的结果。
切片
内置序列函数
1、enumerate函数返回元素的值和元素的索引
2、zip函数:将列表、元组或其他序列的元素配对,新建一个元组构成的列表:
处理任意长度的组合,生成列表长度由最短的序列决定:
遍历:
将已配对的拆分:
反转列表:
reversed是一个生成器,所以没有实例化,需要list来显示
3、字典
使用del或者pop方法删除值,pop在删除后会返回被删除的值,并删除对应的键。
keys和values方法分贝提供字典键、值的迭代器,update合并更新字典
从序列生成字典
方法1:
mapping = {}
for key, value in zip(key_list, value_list):
mapping[key] = value
方法2:
mapping = dict(zip(range(5), reversed(range(5))))
mapping
默认值
setdefault方法优化上面的循环:
有效的字典键类型
字典的值可以是任意类型的,但是字典的键必须是不可变的对象,比如标量类型(整数、浮点数、字符串)或元组(且元组内对象也必须是不可变对象)。这里使用哈希化,可以被哈希化就可以用作字典的键。
为了将列表作为键,一种方式就是将其转换为元组,元组内部的元素都是可以哈希化的,自己也可以哈希化的。
4、集合
集合是一种无序且元素唯一的容器,和字典一样都是大括号,只是只有键没有值
集合支持数学上的集合操作,联合、交际、差集、对称差集等
其他常用的集合运算:
集合和字典类似,集合的元素必须是不可变的没如果包含列表类型的元素,必须先转换为元组,
5、列表、集合和字典的推导式
给定一个字符串列表,过滤出长度大于2的,并将字母改为大写
如果有一个字符串列表,假设我们想要有一个集合,集合包含列表中字符串的长度。
同理字典:
嵌套列表生成器
现有一个包含列表的列表,想要获得名字中包含两个及以上的e的名字的列表
扁平化一个含有整数元组的列表
将包含元组的的列表变成二维列表
6、函数
运用匿名函数,根据字符串中不同字母的数量对一个字符串几个进行排序
7、itertools模块
标准库中的itertools模块是适应于大多数数据算法的生成器集合。例如groupby可以根据任意的序列和一个函数,通过函数的返回值对序列中连续的元素进行分组。
8、文件与操作系统
rstrip() 删除 string 字符串末尾的指定字符(默认为空格)
打开文件进行读取或写入,需要使用内建函数open和绝对、相对路径:
可以用with,文件会在with代码块结束后自动释放