一、元组
1. tuple 元组
特点:不可变的列表
t = ("张无忌", "赵敏", "呵呵哒")
元组类型对象不支持重新定义元素
元组的应用场景:使用者固定了某些数据,不允许外界修改。
如果元组中只有一个元素,如下图中所示,可以看到t是一个字符串类型而非元组,在这里()默认为优先级。
然而,在末尾加上一个逗号,可以看到t变为了元组。
t = ("哈哈",)
2. 关于元组的不可变
如果列表中的某个元素是一个列表,列表本身的内存地址不可变,但内存地址所指向的东西(列表里面的内容)可以改变。
二、set集合
1. 表示方法:
s = {1, 2,3}
注意:
- 如果集合默认为{},那么可以看到它的数据类型是字典。
s = {}
print(type(s))
<class 'dict'>
- set集合是无序的
s = {1, "呵呵哒", 2, 3}
print(s)
{'呵呵哒', 1, 2, 3}
- 不可哈希:python中的set集合进行数据存储的时候,需要对数据进行哈希计算。根基计算出的哈希值进行存储数据。set集合要求存储的数据必须是可以进行哈希计算的。
s = {1, "呵呵哒", 2, 3, []}
返回结果:
可哈希:不可变的数据类型(int,str,tuple,bool)
不可哈希:可变的数据类型(list,dict,set)
- set集合不可嵌套
2. 创建空集合:
s = set()
# 同理
s = str() # 创建空字符串
s = tuple() # 创建空元组
s = list() # 创建空列表
3. 集合的基本操作:
3.1 增:
s.add("赵本山")
3.2 删:
set集合没有索引和切片
由于集合无序,测试的时候没办法验证是最后一个。实际结果变成随便从集合中删掉一个。
s.pop()
另外删除方式:
s.remove("范伟")
3.3 修改:
想要修改,先删除,再新增
3.4 查询:
只能用for循环进行查询:
for item in s:
print(item)
4. 集合的运算方法:
4.1 交集:
方式1:&
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
print(s1 & s2)
方式2:s1.intersection(s2)
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
print(s1.intersection(s2))
4.2 并集:
方式1:|
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
print(s1 | s2)
方式2:s1.union(s2)
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
print(s1.union(s2))
4.3 差集:
方式1:-
表示存在于s1,但不存在于s2的元素
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
print(s1 - s2)
方式2:s1.difference(s2)
s1 = {"刘能", "赵四", "皮长山"}
s2 = {"刘科长", "冯乡长", "皮长山"}
print(s1.difference(s2))
5. 集合的作用:
5.1 去重:
集合中不允许出现重复的元素
如果想对列表中元素进行去重,可以进行如下操作:
print(set(lst))
举例:
如果想给列表还原回去:
print(list(set(lst))) # 去除重复之后的数据是无序的