python學習(30)_集合_2
阿新 • • 發佈:2019-01-22
對稱 返回 ... 推導 lse 判斷 元素 inter cti
遍歷集合
In 遍歷
>>> s1
{4, ‘a‘, ‘x‘, ‘c‘, ‘b‘}
>>> for value in s1:
... print(value)
...
4
a
x
c
b
使用enumerate進行遍歷
>>> for index,value in enumerate(s1):
... print(index,value)
...
0 4
1 a
2 x
3 c
4 b
集合轉換成字符串
>>> s1
{4, ‘a‘, ‘x‘, ‘c‘, ‘b‘}
>>> s = "".join({str(v) for v in s1})
>>> s
‘axcb4‘
>>> set1 = {"a","b","c"}
>>> "".join(set1)
‘cba‘
集合轉換成元組
>>> s1
{4, ‘a‘, ‘x‘, ‘c‘, ‘b‘}
>>> t = tuple(s1)
>>> t
(4, ‘a‘, ‘x‘, ‘c‘, ‘b‘)
集合轉列表
>>> lst = list(s1)
>>> lst
[4, ‘a‘, ‘x‘, ‘c‘, ‘b‘]
set.clear()清空集合
>>> s1
{4, ‘a‘, ‘x‘, ‘c‘, ‘b‘}
>>> s1.clear()
>>> s1
set()
set.copy()復制集合
>>> s1 = set("abcd")
>>> s1
{‘c‘, ‘d‘, ‘b‘, ‘a‘}
>>> s2 = s1.copy()
>>> s2
{‘c‘, ‘d‘, ‘b‘, ‘a‘}
len(set)求集合長度
>>> print (len(s1))
4
交集
利用 & 符號
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1&s2
{3, 4}
set1.intersection(set2)
>>> s1.intersection(s2)
{3, 4}
set1.intersection_update(set2)
交集更新操作
返回兩個集合的交集,set1中其他元素被刪除
>>> s1
{1, 2, 3, 4}
>>> s2
{3, 4, 5, 6}
>>> s1.intersection_update(s2)
>>> s1
{3, 4}
並集
利用 | 符號
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1|s2
{1, 2, 3, 4, 5, 6}
set1.union(set2)
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6}
set1.update(set2)
並集更新操作,set2中的元素被添加到set1
>>> s1.update(s2)
>>> s1
{1, 2, 3, 4, 5, 6}
差集
利用 - 減號
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1-s2
{1, 2}
set1.difference(set2)
>>> s1.difference(s2)
{1, 2}
Set1.difference_update(set2)
差集更新操作,返回set1和set2的差集,set1中的其他不在set2中的元素被刪除
>>> s1 = {1,2,3,4}
>>> s2 = {3,4,5,6}
>>> s1.difference_update(s2)
>>> s1
{1, 2}
set1.symmetric_difference(set2)對稱差集
兩個集合中所有不屬於兩個集合交集的元素
對稱差集:集合A與集合B的對稱差集定義為集合A與集合B中所有不屬於A∩B的元素的集合,記為A△B,也就是說A△B={x|x∈A∪B,x?A∩B},即A△B=(A∪B)—(A∩B).也就是A△B=(A—B)∪(B—A)
>>> s1.symmetric_difference(s2)
{1, 2, 5, 6}
set1.symmetric_difference_update(set2)對稱差集更新操作
Set1返回兩個集合的對稱差集
>>> s1.symmetric_difference_update(s2)
>>> s1
{1, 2, 5, 6}
判斷集合的關系
利用 > 、>=、 、< <=
集合可以使用大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、等於(==)、不等於(!=)來判斷某個集合是否完全包含於另一個集合,也可以使用子父集判斷函數。
> 是左邊集合是否完全包含右邊集合
>>> a = {"a","b","c"}
>>> a
{‘c‘, ‘b‘, ‘a‘}
>>> b = {"a","b"}
>>> b
{‘b‘, ‘a‘}
>>> a > b
True
>>> c = {"a","d"}
>>> a > c
False
set1.issuperset(set2)
判斷set1是否是set2的超集
>>> a
{1, 2, 3, 4, 5, 6, 7}
>>> b
{1, 2, 3, 4}
>>> a.issuperset(b)
True
set1.issubset(set2)
判斷set1是否是set2的子集
>>> a
{1, 2, 3, 4, 5, 6, 7}
>>> b
{1, 2, 3, 4}
>>> b.issubset(a)
True
set1.isdisjoint(set2)是否不存在交集
判斷兩個集合是否不存在交集,如果兩個集合沒有交集,返回True,如果有交集返回False
>>> a = {1,3}
>>> b = {4,6}
>>> a.isdisjoint(b)
True
>>> s1
{1, 2, 5, 6}
>>> s2
{3, 4, 5, 6}
>>> s1.isdisjoint(s2)
False
集合推導式
基本集合推倒式
>>> a = {1,2,3,4}
>>> {i*2 for i in a}
{8, 2, 4, 6}
>>> {i*2 for i in range(5)}
{0, 2, 4, 6, 8}
帶if條件的集合推導式
>>> {i**2 for i in a if i%2==0}
{16, 4}
多層循環集合推導式
>>> {x+y for x in a for y in b}
{‘bx‘, ‘ay‘, ‘cx‘, ‘ax‘, ‘by‘, ‘bz‘, ‘cz‘, ‘az‘, ‘cy‘}
python學習(30)_集合_2