常见的数据结构类型:链表、单链表、双链表、循环链表(c实现的 指针)
可变类型不可变类型
可变数据类型:值发生改变时,内存地址不变,即id不变,证明在改变原值
列表、字典
不可变类型:值发生改变时,内存地址也发生改变,即id也变,证明是没有在改变原值,是产生了新的值
数字、字符串、元组
元组
元组与列表类似,也是可以存多个任意类型的元素,不同之处在于元组的元素不能修改,即元组相当于不可变的列表,用于记录多个固定不允许修改的值,单纯用于取
元组就是列表的不可变类型版本
但凡能被for循环的遍历的数据类型都可以传给tuple()转换成元组类型
切记:
a = (123) print(type(a)) <class 'int'> b = ('123') print(type(b)) <class 'str'> # 要想使用元组类型 当只有一个元素时也要加 , a = (123, ) print(type(a)) <class 'tuple'>
字典
# 字典定义方式 info = {'name': 'fjw', 'age': '18'} info = dict(name='fjw', age=18) info1 = dict([['name', 'fjw'], ('age', 18)]) # 类型转换 default_Values = '666' # 初始化 info2 = {}.fromkeys(('name', 'sex', 'age'),default_Values) print(info1) print(info2) {'name': 'fjw', 'age': 18} {'name': 666, 'sex': 666, 'age': 666} # popitem() 删除并返回最后一组键值对 print(info2.popitem()) ('age', 666) # pop() 括号内填key 删除指定键值对,并返回该键值对的value print(info2.pop('name')) 666 # update() 更新字典 存在则顶掉原来value 不存在则添加 info2.update({'hobby': 'basketball'}) print(info2) {'name': 666, 'sex': 666, 'age': 666, 'hobby': 123} # setdefault() key不存在则新增键值对,并将新增的value返回 key存在则不做任何修改,并返回已存在key对应的value值 与update() 唯一的的区别就是update会顶掉原来的value 而setdefault不会,但是会输出原来value print(info2.setdefault('sex','777')) 666
集合
# 集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算 d = {} # 默认是空字典 s = set() # 这才是定义空集合 # 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型 friends1 = {"zero","kevin","jason","egon"} # 用户1的好友们 friends2 = {"Jy","ricky","jason","egon"} # 用户2的好友们 # 合集/并集(|):求两个用户所有的好友(重复好友只留一个 print(friends1 | friends2) # 交集(&):求两个用户的共同好友 print(friends1 & friends2) # 差集(-):求friend1一独有的好友 如果是friend2 在前面就是求friend2独有的好友 print(friends1 - friends2) # 对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友) print(friends1 ^ friends2) # 值是否相等(==) friend1 >= friend2 判断前者是否包含(或相等)后者 返回True 或者 False # 去重