元组
tuple()函数:将任意序列或者迭代器转换成元组
count(num)方法:统计num在序列中的个数
元组拆包:
#元组拆包
x = (1,2,3)
a, b, c = x
#高级拆包,提供了特殊语法*_ ,即星号加一个下划线,表示不想要的
#有了*rest,就可以拆从起始位置开始到任意位置的拆包
#如现在只取下标为0,1,2
y = (1,2,3,4,5,6)
a, b, c, *_ = y
元组拼接
a = (1,2,3) + (4,5,6)
列表
list函数:将迭代器或者生成器转化成列表
appendf(elem)方法:向列表末尾添加元素
remove(elem)方法:根据元素信息,移除指定列表中的该元素
insert(index, elem)方法:将元素插入到index位置,index之后的元素后移
pop(index):移除index指定的元素,若无index默认移除最后一位元素
列表拼接与联合
#直接拼接
a = [1,2]
a = a + [3,4]
#使用extend方法
a = a.extend([3,4])
#虽然得到结果一致,但是第一种方法代价更大,因为需要创建和复制新的列表
排序
list.sort(key)方法:默认对数值或者ACSII码进行排序,当key=len时,对字符串长度进行排序
sorted(list)函数:对列表进行排序,排序后并进行拷贝返回
维护排序
#内置的bisect模块可以实现二分搜索和一排序列表的维护
import bisect as bs
a = [1,2,2,5,6]
bs.bisect(a,2) #返回2应该插入的位置的index
bs.insort(a, 3) #将3插入到应该插入的位置
#bisect不会事先检查列表是否已排序,所以对未排序的也不会报错,但是可能会得到错误的结果
切片
seq[start:end]:制作(拷贝)从start到end的切片,当这两者没有时,表示拷贝整个列表
seq[start:end:step]:每隔step拷贝一个值,当step为-1时,不代表间隔取值,而是表示对拷贝的列表进行翻转
内建序列函数
enumerate(seq)函数:返回(index,value)元组的序列
a = ['x','y']
enumerate(a)
#out: [(0,'x'), (1,'y')]
zip(seq1, seq2)函数:将两个序列的元素对位匹配组成元组,并构成一个列表,返回对象,zip可以处理很多序列(不止两个),生产的列表称多有最短序列的长度决定
a = [1,2,3]
b = [4,5,6]
c = [True, False]
print(list(zip(a,b,c))) #需要使用list将zip返回的对象转换成列表
#out:[(1, 4, True), (2, 5, False)]
reversed函数:将序列倒序,它是一个生成器,如果没有对它进行实例化,即是用list转换,或者for,他不会输出一个列表
字典
字典的key必须是不变的对象,而value可以为任何值
dict函数:接受一个二元组,生成一个字典
d = dict(zip(range(5), revered(range(5))))
dict.get(key, default_value):当key不是字典的key时,会返回None,而不是想pop那样会报错
hash函数:用于检测一个对象是否可以被哈希化,即是否可以作为key
集合
集合是无序且元素唯一的容器
set函数 | 将一个序列变成集合 |
s.add(x) | 将x元素添加到s集合 |
s.clear() | 清空集合 |
s.remove(x) | 从集合中移除x |
s.pop() | 移除任意元素,若集合为空则报错 |
推导式
列表:[x for x in collection if condition]
字典:{key: value for key, value in collection if condition}
集合:{x for x in collection if condition}
map(len, strings)函数: 计算strings中每个字符串的长度