特点:对于大量数据 查找,删除,添加速度快。in 运算符 判断一个对象是否存在于集合中
集合 set集合是可变的容器
集合内的数据对象都是唯一的(不能重复多次的)
集合是无序的存储结构,集合中的数据没有先后关系
集合内的元素必须是不可变对象
集合是可迭代的
集合是相当于只有键没有值的字典(键则是集合的数据)
创建空集合:
s = set()
创建非空集合:
s = {1,2,3,4,5}
s = set(range(1, 6))
集合的构造函数
set() 创建一个空集合(不能用{}来创建空集合)
set(iterable) 用可迭代对象创建一个新的集合
示例:
s = set() # 空集合
s = set("ABC") # {'A', 'C', 'B'}
s = set("ABCCBA") # {'C', 'B', 'A'}
s = set({1 : "1", 2:"2", 5:"5"}) # {1, 2, 5}
s = set([1, 0, 3.14, 0.618, "ABC"])
s = set(("ABC", 123, True))
s = {True, None, "ABC", (1,2,3)}
集合的运算:
交集 并集,补集, 子集,超集
& 生成两个集合的交集
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 & s2 # s3 = {2, 3}
| 生成两个集合的并集
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 | s2 # s3 = {1,2,3,4}
- 生成两个集合的补集
s1 = {1,2,3}
s2 = {2,3,4}
# 属于 s1,但不属于 s2的所有元素的集合
s3 = s1 - s2 # s3 = {1}
^ 生成两个集合的对称补集
s1 = {1,2,3}
s2 = {2,3,4}
# 属于 s1,但不属于 s2的集合 并上 属于s2 但不属于s2的集合
s3 = s1 ^ s2 # s3 = {1, 4}
# 相当于 s3 = (s1 - s2) | (s2 - s1)
请问:
s1 = {1,2,3}
s2 = {7,8,9}
s1 ^ s2 返回的结果是什么???
s1 - s2 返回的结果是什么???
> 判断一个集合是另一个集合的超集
< 判断一个集合是另一个集合的子集
s1 = {1,2,3}
s2 = {2,3}
s1 > s2 # True
s2 < s1 # True
== != 判断集合是否相同
>= <= 判断集合的包含关系和是否相同
{1,2,3} == {3,2,1} # True
{1,2} <= {2,3,1} # True
in / not in
10 in {1,2,3,4,5,6,7,8, "ABC"}
等同于字典,in 运算符用于判断一个对象是否存在于集合中
集合的特点是对于大量数 查找,删除,添加速度快
可以用于集合的内建函数:
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x)
集合是可迭代对象,集合的迭代不保证先后顺序
python3 集合中常用的方法:
S 代表集合
S.add(e) 在集合中添加一个新的元素e,如果元素存在,则不添加
S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
S.discard(e) 从集合S中移除一个元素e(不会出错)
S.clear() 清空集合
S.copy() 将集合进行一次浅拷贝
S.pop() 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
S.update(S2) 用S与S2得到并集来更新S
集合的修改单个元素通常是先删除,后加入
集合推导式:
语法:
{表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注:[] 里的内容代表可省略
示例:
# 将1~10 的奇数的平方生成一个集合
s = {x ** 2 for x in range(1, 11) if x % 2}
names = ["Tom", "Jerry", "Spike", "Tom", "Jerry", "Tyke"]
animals_set = {n for n in names}
集合推导式嵌套
语法同列表推导式
固定集合 frozenset
固定集合是不可变的,无序的,含有唯一元素的集合
作用:
可以作为字典的键,也可以作为集合的值
创建空的固定集合:
frozenset()
创建非空的固定集合:
frozenset(iterable)
示例:
f = frozenset() # f = frozenset()
f = frozenset(range(10))
运算:
& | - ^
< <= > >= == !=
in / not in
(以上运算与 set 完全相同)
固定集合的方法:
相当于集合的全部方法去掉修改集合的方法
1 阶段总结
数据类型 :
不可变的
bool int float complex str, tuple, frozenset
可变的
list, dict, set, bytearray(后面再学)
值:
None, True, False
运算符:
+, -, *, /, //, %, **
<, <=, >, >=, ==, !=, is, is not
in, not in
not, and, or
&, |, ^, <<, >>, ~
+(正号), -(负号)
表达式
1
print("hello")
1 + 2
sum(range(10)) + sum(range(20))
条件表达式 x if x > y else y
全部的推导式 [x for x in range(10)]
语句:
1. 表达式语句
print("hello!")
2. 赋值语句
a = 100
x, y = 200, 300
a += 50
a = b = c = 10000
3. if 语句
4. while 语句
5. for 语句
6. del 语句
7. break 语句
8. continue 语句
9. pass 语句
内建函数:
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x)
------------
bool(x)
int(x)
float(x)
complex(x)
str(x)
list(x)
tuple(x)
dict(x)
set(x)
frozenset(x)
------------
abs(x)
round(x)
------------
bin(x)
oct(x)
hex(x)
chr(x)
ord(x)
------
range(start, stop, step)
------
input(x)
print(....)
>>> dir(__builtins__)
>>> help(__builtins__)