目录
目录
一. 元组(tuple)
①元组属于不可变数列,列表属于可变数列。即创建后即不可修改。元组没有增加元素、修改元素、删除元素的方法
②但是访问元素、拼接元素、切片操作、运算操作、计数操作还是可以使用的。
③元组的访问和处理速度比列表快
④与整数和字符串一样,元组可以作为字典的键,但是列表则不可以
1.1 元组的创建
① ()创建:a = (1,2,3) 或者是省略(),直接a = 1,2,3 都可以创建元组对象
注意:如果元组对象只有一个,创建时要在后面加, a = (1,),否则解释器会把a作为一个整数来处理
②通过tuple()创建:a = tuple(可迭代对象) a=tuple('a,b,c') a=tuple(range(3)) a=tuple([a,b,c])
1.2 元组的访问
元组的访问与列表的访问基本一致,可通过下标、切片(开始下标、结束下标、步长)等方式进行访问
1.3 元组的排序
可以通过sorted()函数完成元组的排序,sorted方法生成的总是列表对象
max()、min()、sum()等方法均可使用
1.4 推导式生成元组
可以通过推导式生成元组的方式:a = (x * 2 for x in range(5))
tuple(a) 的值就是(0,2,4,6,8)
a首先是生成的生成器对象,该对象只能通过指针访问一次,然后通过tuple函数转换成元组对象
生成器对象还可以通过__next__()函数,一个一个的通过指针完成访问,注意,是两个下划线
a.__next__(),此时是访问a中的第一个指针位置元素:0
a.__next__(),此时是访问a中的第二个指针位置元素:2
以此类推
二. 字典
简介:
①:字典是键值对的无序可变序列,KV形式的序列,通过键找值
②
2.1 字典的创建
①. 通过{}、dict()来创建字段对象,dict()结合列表元组的方式创建字典
a = {'name': '张三', 'age': 18, "store": [1,2,3]}
b = dict(name="张三", age=18, store=[1, 2, 3])
# dict()结合列表元组的方式创建字典, 列表中时元组,每一个元组代表一个键值对
c = dict([('name', '张三'), ('age', 18), ("store", [1,2,3])])
②.通过zip方式创建字典对象,将两个列表打包成键值对
k = ["name", "age", "store"]
v = ["张三", 18, [1, 2, 3]]
kv = dict(zip(k, v))
③. 通过fromkeys创建值为空的字典
d = dict.fromkeys(["name", "age", "store"])
2.2 字典的访问
a = {'name': '张三', 'age': 18, "store": [1,2,3]}
# 1. 通过[]访问,如果键不存在,则会抛出异常
print(a["name"])
print(a["namesss"]) #抛出异常
# 2. 通过get()方法获取键值,如果键不存在,则返回none,或者指定的返回字符串,推荐使用
print(a.get("name"))
print(a.get("namesss", "不存在返回的字符串")) #返回值:不存在返回的字符串
2.3 字典的常用方法
a = {'name': '张三', 'age': 18, "store": [1,2,3]}
# 1. 列出所有键值对
a.items()
# 2. 列出所有键/值
a.keys()
a.values()
# 3. 获取字典对象键值对的长度
len(a)
# 4. 检测一个键是否存在于字典对象中,返回true/false
"name" in a
2.4 字典的添加、修改、删除
dict_a = {"name":"张三", "age":18, "store":[1,2,3]}
# 1.直接添加,如果键不存在,则直接添加,如果键已经存在,则直接覆盖
dict_a["address"] = "杭州市"
print(dict_a)
# 2. update(),将新字典中的键值对全部添加到旧字典的键值对中,如果存在,直接覆盖
b = {"name":"李四", "sex":"男", "phone":"13088888888"}
dict_a.update(b)
# 此时dict_a={'name': '李四', 'age': 18, 'store': [1, 2, 3], 'address': '杭州市', 'sex': '男', 'phone': '13088888888'}
# 3.字典的删除
# del(dict_a["age"]) 可以直接删除指定的键
# b = pop("sex") 将指定的键删除,并返回该键的值给b
# dict_a.clean() 将该字典的所有键值对清空
# 4.随机删除popitem()方法,因为字典是无序的,所以调用该方法时,会随机删除键值对,并返回键的值
print(dict_a.popitem())
# 5.序列解包:类似于迭代器的意思,将元组、列表、字典通过简易写法完成复制,可以方便的对多个变量赋值
print(dict_a)
a, b, c = (1, 2, 3)
d, e, f = [4, 5, 6]
# 赋值字典的所有键,字典的序列解包必须要与字典的值个数一致,否则就会报错
h, i, j, k, l = dict_a
# 赋值字典的值
h, i, j, k, l = dict_a.values()
# # 赋值字典的键值,返回值为元组
h, i, j, k, l = dict_a.items()
三. 集合
集合的底层实现就是字典,只有字典的键对象,并且是不能重复的唯一值
3.1. 集合的常用操作
# 1.使用{}创建,使用add()添加元素
set_a = {1, 2, 3}
# 因为集合不能重复,所以再add一个1,该集合的值不会改变
set_a.add(1)
# 2.使用set()函数,将列表、元组等可迭代对象转为集合对象
list_a = ["a", "b", "c"]
set_b = set(list_a)
# 3. remove()删除指定元素,clean()清空集合
set_a.remove(1)
set_b.clear()
# 4.集合的相关操作,交集并集差集
a = {1, 2, "x"}
b = {3, 4, "x"}
# 并集,结果为{1,2,"x",3,4}
a | b
a.union(b)
# 交集,结果为{"x"}
a & b
a.intersection(b)
# 差集,结果为{1,2}
a - b
a.difference(b)