继续前面文章的内容,这篇文章整理列表,字典,元组,集合的学习笔记并做一些练习

2.4列表


列表右两种定义办法:一种是直接方括号写入元素,另一种是使用list()函数。列表中的元素可以是python中的任意对象,整数,浮点数,字符串,列表,元组,字典,都可以


列表也是一种序列,列表中的元素也是可以重复的

索引和切片的规则,序列都是通用的,所以和字符串是一样的。


与字符串不同的地方在于,列表支持这种修改方式,但字符串不可以。

列表是一种有序,可变的序列,容器


字符串的加法,乘法,in操作也完全适用于列表。

列表的方法,同样使用DIR函数。


如何给列表添加元素?

append() insert()


这里可以看到append函数将新增加的元素添加到列表的末尾,而insert函数将新增加元素添加到索引对象之前。


函数extend()


从help的描述可以看出,extend函数添加的是一个可迭代的对象,列表是一个可迭代的对象,这里新建了一个列表lst2并将这个列表添加到了lst里面。

再来看下删除的操作pop和remove


可以看出pop会删除指定的索引,如果没有填写该索引默认是-1,并返回删除的元素


可以看出remove删除指定的元素并且没有返回值。(如果指定元素在列表中有重复,则默认删除第一次出现的该元素

clear()

清空列表中的全部元素lst,clear()

排序

sort,sorted ,reverse,以及之前提到的切片的办法


sorted可以新生成一个排序的列表,不影响之前的列表


对比列表和字符串:都是序列,但列表也是容器类对象。列表是可变序列,字符串不可变。

2.5元组

定义元组有两种办法:


如果创建只有一个元素的的元组需要 添加”,”


元组与列表最大的区别是元组的元素不可以修改,如果一定要修改,先使用list()函数转化成列表,修改好之后再用tuple()函数恢复成元组

元组运行的速度要快于列表;

元组和列表的共同的点是他们都是序列,索引切片这些操作也适用于元组。

2.6字典

关于字典的定义:有三种办法


我这里犯了一个错误,第一个变量命名成立函数dict()的名字,导致dict变成了不是可用的内置函数类型。

这里通过del()语句将第一个变量删除后旧恢复了正常。

第三种办法还是使用dict函数,不过函数的对象是列表,列表的里面的元素是元组


定义中冒号前的对象称为:键(key),冒号后的对象称为:值(value)

字典中的元素是一种映射关系,他们被称为键值对。

字典中的key必须是唯一的,不可变的对象,到目前为止接触的不可变对象有元组,整数,浮点数,字符串。列表作为可变的对象是不能称为字典的key的

提取字典的元素:dic[key ],返回key映射的value

字典不是序列,字典也是一个可变对象。

字典的操作方法:

1)如何判断一个键是不是在字典里?

get()函数


如果这个键在字典里,返回键对应的值,如果不在,则返回后面的值。

setdefault()用法同get一样,不同的是,如果查询的键不在字典里,则会将这个键以及后面的值插入到字典。

2)在字典中增加元素:

update()


如果一个字典里面不包含一个键值对可以直接这样添加:


这里可以看到定义了一个空字典,但是操作之后字典中出现了赋值的键值对。

3)删除操作:

del语句


pop()函数


删除并返回键值对对应的值

popitem()默认删除字典中最后的一个键值对。

字典和列表异同

二者都是容器类对象,字典不是序列,列表是序列。字典和列表都是可变对象

2.7集合

可变集合与不可变集合的定义:


这里可以看出集合的无序性

删除操作:


其中pop()是随机删除集合中的一个元素,而remove是删除指定元素

如果创建不可变集合使用frozenset

copy()

集合作为容器来对象和字典列表用有一个共同的用法就是copy

查看copy的文档发现:return a

shallow

copy of

这里需要理解以下这个shallow


以列表为例shallow copy 浅在值copy了第一层对象,列表中的列表(第二层)没有copy 当被拷贝对象的第二层发生改变了时候,拷贝对象的第二层也会发生改变

如果想使用深copy则需要调用模块:


元素与集合的关系,集合与集合的关系,集合之间的运算

元素与集合的关系:in来判断

元素间的关系:超集:issupperset 子集:issubset


集合间的运算:

∩,∪,-