简介
集合跟我们学的列表有点像,也是可以存放一堆数据,不过集合有几个独特的特点,令其在整个Python语言中占有一席之地。
相当于只有键没有值的字典(键则是集合的数据)。
基本操作
特点
* 里面的元素不可变,代表不能存储一个list、dict、在集合中,字符串、数字、元组等不可变类型可以存。
* 天生自带去重,在集合中没有办法存储重复的元素。
* 无序、不像列表一样通过索引来标记在列表中的位置,元素是无序的,集合的元素无先后之分,如集合{2,3,4}和{3,2,4}算作相同集合。
作用
我们用集合主要做两件事: 去重和关系运算
基本语法
创建集合
注意也是{ },但不是dict,不是k-v结构
集合名 = {key,....}
集合名 = set()
集合名 = set(可迭代对象)
由于集合是天生去重,重复的值你根本存不进去
msg ={"小C学安全","Python","Java"}
msg1 = set("小C学安全")
msg2 = set(["小C学安全","Python","Java"])
print(msg,msg1,msg2)
msg ={"小C学安全","Python","Java","Python"}
print(msg)
{'Python', '小C学安全', 'Java'}
列表去重
a = [1,2,3,2,1,"Python","小C学安全","Python"]
print(a)
print(set(a))
print(list(set(a)))
增删改查
增:
集合名.add(元素)
msg={1, 2, '小C学安全', 3, 'Python'}
msg.add("哈哈哈哈")
print(msg)
删除:
集合.pop() # 随机删除一个值,并返回该值
集合.remove(3) # 删除3这个元素,若3不存在,报错
集合.discard(3) # 删除指定的值,若该值不存在,不报错 None
集合.clear() # 清空
msg={1, 2, '小C学安全', 3, 'Python'}
msg.pop()
print(msg)
#{2, 3, 'Python', '小C学安全'}
msg.remove(2)
print(msg)
#{1, 3, '小C学安全', 'Python'}
msg.discard(2)
print(msg)
#{1, 3, '小C学安全', 'Python'}
msg.clear()
print(msg)
#{}
查:
msg={1, 2, '小C学安全', 3, 'Python'}
print("小C学安全" in msg)
#结果为True
关系语法
交集 :( &;intersection) 返回共同元素
1 s1 = {1, 2, 3}
2 s2 = {2, 3, 4}
3 s3 = s1 & s2 # {2, 3}
并集: ( |;union ) 返回不重复元素
1 s1 = {1, 2, 3}
2 s2 = {2, 3, 4}
3 s3 = s1 | s2 # {1, 2, 3, 4
差集(补集):(-;difference)返回只属于其中之一的元素
1 s1 = {1, 2, 3}
2 s2 = {2, 3, 4}
3 s1 - s2 # {1} 属于s1但不属于s2
对称差集:(^ ;symmetric_difference )返回不相同的的元素
1 s1 = {1, 2, 3}
2 s2 = {2, 3, 4}
3 s3 = s1 ^ s2 # {1, 4} 等同于(s1-s2 | s2-s1)
子集<:判断一个集合的所有元素是否完全在另一个集合中 # issubset
超集>:判断一个集合是否具有另一个集合的所有元素 # issuperset
集合推导式
msg={1, 2, 66, 3, 88}
print({i+1 for i in msg})
print({i+1 for i in msg if i==66})
{2, 67, 3, 4, 89}
{67}
标签:set,Python,s2,s1,print,集合,msg
From: https://www.cnblogs.com/fuchangjiang/p/17956208