1.7. 集合 Set()¶
set()函数可以将列表转换为集合
可以用于去重复数据
1.7.1. 1.集合的方法¶
s.update(t) # 用t中的元素修改s,s现在包含s或t的成员 s |= t
s.intersection_update(t) # s中的成员是共用属于s和t的元素 s &= t
s.difference_update(t) # s中的成员是属于s但不包含在t中的元素 s -= t
s.symmetric_difference_update(t) # s中的成员更新为那些包含在s或t中,但不是s和t共有的元素 s ^= t
s.add(obj) # 在集合s中添加对象obj
s.remove(obj) # 从集合s中删除对象obj;如果obj不是集合s中的元素(obj not in s),将引发KeyError错误
s.discard(obj) # 如果obj是集合s中的元素,从集合s中删除对象obj
s.pop() # 删除集合s中的任意一个对象,并返回它
s.clear() # 删除集合s中的所有元素
s.issubset(t) # 如果s是t的子集,则返回True s <= t
s.issuperset(t) # 如果t是s的超集,则返回True s >= t
s.union(t) # 合并操作;返回一个新集合,该集合是s和t的并集 s | t
s.intersection(t) # 交集操作;返回一个新集合,该集合是s和t的交集 s & t
s.difference(t) # 返回一个新集合,改集合是s的成员,但不是t的成员 s - t
s.symmetric_difference(t) # 返回一个新集合,该集合是s或t的成员,但不是s和t共有的成员 s ^ t
s.copy() # 返回一个新集合,它是集合s的浅复制
obj in s # 成员测试;obj是s中的元素 返回True
obj not in s # 非成员测试:obj不是s中元素 返回True
s == t # 等价测试 是否具有相同元素
s != t # 不等价测试
s < t # 子集测试;s!=t且s中所有元素都是t的成员
s > t # 超集测试;s!=t且t中所有元素都是s的成员
1.1 交集、并集、差集、对称差集¶
代码示例1¶
#集合的创建
set1 = {"水瓶座","射手座","双鱼座","双子座"} #定义了一个集合,集合和字典一样,是无序的
print(set1) #因为是无序的,所以无法通过索引来获取
set2 = {"水瓶座","射手座","双鱼座","双子座","水瓶座"} #去重复了
print(set2)
python = {"hujianli1","hujianli2","hujianli3","hujianli4","xiaojian1"}
C = {"xiaojian1","xiaojian2","xiaojian3","xiaojian4"}
print(python | C) #求并集
print(python & C) #求交集
代码示例2¶
#!/usr/bin/env python
#-*- coding:utf8 -*-
"""
交集 &
并集 |
差集 -
"""
python = set(["hujianli1","hujianli2",'hujianli3','hujianli4','jianli4'])
C = set(['hujianli1','jianli1','jianli2','jianli3','jianli4'])
print("选择python学生名字:", python)
print("选择C学生的名字:", C)
print("交集运算:",python & C) #既选择python语言又选择C语言
print("并集运算:",python | C) #参与选课的全部学生名字
print("差集运算:",python - C) #python语言和C语言的差集
1.7.2. 2.集合的修改和删除¶
代码示例3¶
#!/usr/bin/env python
#-*- coding:utf8 -*-
mr = set(['零基础学JAVA','零基础学Android',"零基础学PHP",'零基础学C语言']) #定义一个集合
mr.add("零基础学python") #向集合当中添加元素,会自动删除重复的元素
print(mr)
mr.pop() #随机删除元素
#print(mr)
if "零基础学JAVA" in mr:
mr.remove("零基础学JAVA") #移除集合的元素
print(mr)
mr.clear() #清空整个集合
print(mr)
# del mr #删除整个集合
# print(mr)
#-------------------------------------------------
# python新增jianli3,C减去jianli3
#--------------------------------------------------
python = set(["hujianli","xiaojian","xiaojian2","xiaojian3"])
C = set(["jianli1","jianli2","jianli3","jianli4"])
python.add("jianli3")
C.remove("jianli3")
print(python)
print(C)
1.7.3. 3. 不可变集合¶
集合是一种可变类型,使用.add()方法可以向集合追加新成员,可使用内置类型frozenset,它和普通set非常像,只是少了所有的修改类方法:
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/5/17 23:08
# filename: 不可变集合.py
student_set = frozenset({"张三", "李四", "王五"})
print(student_set)
print(type(student_set))
# 报错,不能被修改
# print(student_set.add("胡六"))
# 不可变报错
try:
student_set.add("懂事")
except:
print("error")
a = (12, 13, 14, 15)
seta = frozenset(a)
print(seta) #frozenset({12, 13, 14, 15})
1.7.4. 4.各容器数据类型区别¶
#!/usr/bin/env python
#-*- coding:utf8 -*-
list = []
tuple = ()
dict = {}
set = set()
#是否可变
'''
列表、字典、集合可变
元祖不可变
'''
#是否重复
'''
可重复:列表、元祖、字典
不可重复:集合
'''
#是否有序
'''
列表、元祖 有序
字典、集合 无序
'''