python学习笔记4
集合set{}
- 集合是无序的,不支持下标访问;可以修改;不能重复(定义时可以有重复元素,但实际上会自动去重);多种元素类型;支持for循环;空集合:
my_set = set()
add()
方法:
- 语法:my_set.add(新元素)
remove()
方法:
- 语法:my_set.remove(要移除的元素)
pop()
方法:
- 语法:element = my_set.pop() 或者 my_set.pop()
- 和列表不同,这里没有实际参数,所以会随机删除一个元素(所谓随机:如果集合中所有元素均为数字类型–整型或浮点型–,则会删掉所有元素中最小的那个元素;如果元素中有其他比如字符串元素,则会随即删除一个。 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。)
clear()
方法:
- my_set.clear() 清空集合,得到 set()
difference()
方法:
- 语法:set3 = set1.difference(set2)
- 功能:获得集合1与集合2的差集(集合1中有但是集合2中没有的元素)
- 集合1与集合2的内容不变
difference_update()
方法:
- 语法:set1.difference_update(set2)
- 功能:对比集合1和2,在集合1内,删除和集合2相同的元素(把集合1变成了差集)
- 集合1被修改,集合2不变
union()
方法:
- 语法:set3 = set1.union(set2)
- 功能:求集合1和集合2的并集
- 产生了并集集合3,集合1集合2不变
- len():统计集合中元素总数
- 集合的遍历只能用
for循环
字典dict
- 由键值对
{key: value}
组成。
- 定义空字典方法:
dict1 = {}
或者dict2 = dict()
;- 字典不能下标索引,只能通过key值进行索引;
- 字典定义不能有有重复的key值,不然相当于新定义的key中的value覆盖掉原来的value
- 字典的key与value的类型:除了key不能是字典(dict)类型外,key与value的类型没有限制
- 嵌套字典访问方式:my_dict[外key][内key]
- 新增元素与更新元素
- 语法:
字典[key] = value
- 如果key原来不存在,则会增加一个新的键值对(元素),如果key原来存在,则会更新元素
- 删除元素
- 语法:my_dict.pop(key) 或者
value = my_dict.pop(key)
,返回的是删除的key对应的value- 字典被修改
- clear()方法
- 语法:
my_dict.clear()
清空字典
- keys()方法
- 语法:
keys = my_dict.keys()
- 返回的keys是字典中所有的键值,keys是一个列表
- 遍历字典:方式一: for key in keys: 方式二:for key in my_dict: 不支持while循环
- len()
- 语法:num = len(my_dict)
- 获取字典中元素的数量
数据容器对比
列表 | 元组 | 字符串 | 集合 | 字典 | |
---|---|---|---|---|---|
元素数量 | 支持多个 | 支持多个 | 支持多个 | 支持多个 | 支持多个 |
元素类型 | 任意 | 任意 | 仅字符 | 任意 | key:value(key不能是字典) |
下标索引 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
重复元素 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
可修改性 | 支持 | 不支持 | 不支持 | 支持 | 支持 |
数据有序 | 是 | 是 | 是 | 否 | 否 |
使用场景 | 可修改、可重复的一批数据记录场景 | 不可修改、可重复的一批数据记录场景 | 一串字符 记录的场景 | 可修改、不可重复的数据记录场景 | 以key检索value的数据记录场景 |
其他
五类数据容器
- 遍历:都支持遍历操作
- 5类数据容器都支持for循环遍历
- 列表、元组、字符串支持while循环遍历,集合、字典不支持(无法下标索引)
- 都支持len()函数、max()函数、min()函数
- len():统计元素数量
- max():统计元素中最大元素(如果都是数字,统计最大数字;如果是字符串,看ASCII码表最大;如果是字典,比较的是key的最大值,返回的也是最大的key)
- min():统计元素中最小元素(如果都是数字,统计最小数字;如果是字符串,看ASCII码表最小;如果是字典,比较的是key的最小值,返回的也是最小的key)
- 类型转换
- list(容器):将给定容器转换成列表 (字符串中的每个字符取出来当作一个元素;字典中的value抛弃掉,只剩下key当作列表的元素)
- str(容器):将给定容器转换成字符串(相当于其他形式的数据容器两端直接加双引号,就变成了字符串;字典保留了key和value)
- tuple(容器):将给定容器转换成元组(字符串中的每个字符取出来当作一个元素;字典中的value抛弃掉,只剩下key当作列表的元素)
- set(容器):将给定容器转换成集合(会去重;字符串中的每个字符取出来当作一个元素,顺序可能会变;字典中的value抛弃掉,只剩下key当作列表的元素,顺序可能会变)
- sorted()函数:
- 格式:sorted(数据容器, reverse=true) (reverse可省略,省略表示从小到大排序,加上表示从大到小排序)
- 排序时把数据容器中的元素正向或者反向排序后放到一个列表中,也就是说会得到一个排好序的列表对象;字典是对key进行排序,并且舍弃value
- 得到一个新的列表,原数据容器不变
- min()、 max()、 sorted()中大小的比较
根据ASCII码表进行比较,如果是字符串,就是从左向右一位一位比较,其中一位大则后面的无需比较。