Python数据结构:元组、列表、字典、集合

1.元组

元组不可修改,但元组元素(如列表)的内部可以修改

元组的+和*

+号可以连接元组来生成新元组,*号可以复制元组

元组拆分

*rest:用于只取出tuple中开头几个元素,剩下的元素直接赋给*rest。如果rest部分是用不到的数据,为了方便直接用_代替

元组方法

count(x):统计x在元组中的出现次数

index(x):查找x在元组中的下标。如果x多次出现,则返回第一次出现的下标

2.列表

2.1 添加和移除元素

append(x):将x添加到列表尾部

insert(index , x):将x插入到下标index处

pop(index):删除下标index处的元素,并返回元素值

remove(x):删除第一个x

2.2 连接两个列表

+号生成一个新列表,extend添加到原列表上。extend比 + 号快。

2.3 检查一个值是否在列表中,用in:

2.4 列表元素排序sort()

key也是一个函数,用来指定排序方法。比如我们想要按string的长度来排序:

2.5 有序列表:二分查找、插入

bisect.bisect(list,x):返回元素x应当被插入有序list的位置(下标)

bisect.insort(list,x):将x插入有序list, 并仍然保持有序

注:bisect模块不会检查list是否排好序,所以用这个模块之前要先把list排序。

2.6 切片:包含开头,不包含结尾

对切片赋值:比如把一个元素换成两个元素

省略开头或结尾:

负索引表示倒数第几个:

第2个冒号后面的数代表步长,就是隔几个元素取一次:

步长设为-1能反转一个list或tuple:

3. 一些序列函数

enumerate(枚举)

enumerate能返回一个(i, value)的元组,其中i是下标,value是元素值

比如把序列的元素值(假设没有重复值)映射到下标值:

 sorted函数:返回一个新的已排序列表。而前面的sort方法是修改原列表。参数与列表的sort方法一致。

zip函数:将元组或列表配对(本质上是行列变换)。返回值没有实例化,不能直接打印,需要转化为list或tuple。

 zip和enumerate搭配,用于遍历配对结果:

将已配对的结果还原:

reversed函数:将元组、列表等元素倒过来。注意,reversed是一个生成器,所以需要实例化,转化为list或tuple。

4.字典

字典也叫哈希表(hash map )或关联数组(associative array),是键值对集合。

4.1 创建字典:可用{ }创建。

4.2 插入

4.3 删除:del或pop。pop可以返回被删的值

4.4 提取所有key、提取所有value

      使用keys()、values()

4.5 字典合并:update()

注:如果两个字典存在相同的键,调用update的字典的值会被覆盖

4.6 检查字典中是否含有一个键

4.7 默认值

(1) get(key,default_value)用来获得key对应的值,如果字典中没有key,则返回默认值default

 (2) setdefault方法用于指定所有键的初始值

例如:将单词按首字母分类

(3) collections模块的defaultdict指定值的默认类型

4.8 判断key的类型是否有效

字典的value可以是任何python对象,但key必须是不可变对象

hash函数检查一个对象是否可作为key:

如果要将列表作为key,可以先将其转换为元组。元组只要它内部元素均可hash,则它自身也可hash。

 

5.集合

set元素无序且不重复。两种创建方式:set()、{ }

并集:a.union(b) 或 a|b (两种方法均创建一个新集合)

交集:a.intersection(b) 或 a&b (两种方法均创建一个新集合)

判断集合相等(集合元素完全相同):== 

其他集合的操作:

 set的元素必须是不可更改的(比如元组、字符串等)。如果想要list一样的元素,只能先转换为tuple:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值