天天看點

python之set集合,基礎篇

集合:set
      
特點:
1>、無序 ,因為集合是無序的,是以不可用下标值查詢,也不可切片
2>、去重 ,一個集合内不能有兩個相同的元素
3>、可添加,可删除,不可修改等等
4>、集合内的元素可以是任何類型,字元串,清單,元組等等。

1,定義一個空集合
      
name_set = set()      

需要注意的是:

name_str = ""       --定義空字元串

name_list = []      --定義空列      
name_list = list()  --定義空清單      
name_tuple = ()     --定義空元組
      
name_tuple = tuple()--定義空元組      
name_set = set()    --定義空集合

name_dict = {}      --定義空字典

name_dict = dict()  --定義空字典      

2,定義一個非空集合

name_set = {'a', 'b', 'c'}
print(name_set)      

注意的是,如果定義的時候有兩個相同的元素,因為集合是去重的,是以....,你懂的!

name_set = {'a', 'b','b', 'c'}
print(name_set)
      
print(type(name_set))      
python之set集合,基礎篇

 3,資料類型轉換,把清單轉換為集合--(自動去重)

name_list = ['a', 'c', 'b', 'a']
name_set = set(name_list)  # 強制轉換
print(name_set)      
python之set集合,基礎篇

 4,集合運算

集合之間也可進行數學集合運算(例如:并集、交集,差集,對稱差集等),可用相應的操作符或方法來實作。

1>交集

  兩個集合 A 和 B 的交集是含有所有既屬于 A 又屬于 B 的元素,而沒有其他元素的集合。

    intersection() 或者 &

name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.intersection(name2_set))
print(name1_set & name2_set)      
python之set集合,基礎篇

 2>,并集

一組集合的并集是這些集合的所有元素構成的集合,

 union() 或者 |

name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.union(name2_set))
print(name1_set | name2_set)      
python之set集合,基礎篇

 3>,差集

A 與 B 的差集是所有屬于 A 且不屬于 B 的元素構成的集合
      
difference() 或者 -
      
name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name2_set.difference(name1_set))
print(name2_set - name1_set)      
python之set集合,基礎篇

 4>,對稱差集

集合A與集合B中隻有集合A或集合B有的元素的集合

symmetric_difference() 或者 ^

name1_list = ["a", "b", "c"]
name2_list = ["a", "c", "m"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.symmetric_difference(name2_set))
print(name1_set ^ name2_set)      
python之set集合,基礎篇

 5>,是否是子集

子集,為某個集合中一部分的集合,故亦稱部分集合,即集合A中所有的元素都是集合B中的元素,則集合A是集合B的子集。

issubset() <= 是傳回True,不是傳回False
      
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name2_set.issubset(name1_set))
print(name2_set <= name1_set)

print(name1_set<=name2_set)      
python之set集合,基礎篇

 6>,是否是父集

即集合A中所有的元素都是集合B中的元素,則集合B是集合A的子集。
      
issuperset() >= 是父集傳回True,不是則傳回False      
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.issuperset(name2_set))
print(name1_set >= name2_set)      
python之set集合,基礎篇

 7>,是否有交集,

判斷兩個集合是否無交集:無交集傳回True,有交集傳回False
      
isdisjoint()      
name1_list = ["a", "b", "c"]
name2_list = ["a", "c"]
name1_set = set(name1_list)
name2_set = set(name2_list)
print(name1_set.isdisjoint(name2_set))      
python之set集合,基礎篇
5,集合的方法      
name_set = set()
print(dir(name_set))      

1>,add(),

新增1個元素
      
name_{'a', 'b'}

name_set.add("c")
print(name_set)      
python之set集合,基礎篇

 2>,clear()

清除set集合中所有元素
      
name_set = {'a', 'b'}

name_set.clear()
print(name_set)      

3>,discard()

删除集合中某個元素,元素存在則删除,不存在則不報錯      
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.discard("b")  # 删除存在的元素

print(name_set)      
python之set集合,基礎篇

 4>,pop()

删除随機一個元素.
      
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.pop()
print(name_set)      

5>,remove()

删除某個元素,如果元素存在則删除,不存在則報錯
      
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.remove("b")  #存在的元素

print(name_set)      
python之set集合,基礎篇

 6>,update()

添加多個元素      
name_list = ['a', 'b', 'c']
name_set = set(name_list)
name_set.update({"m", "n", "b"}) # 清單、元組、集合、字元串
name_set.update(['mnb'])
print(name_set)      
python之set集合,基礎篇
6,類型轉化

清單 或者 元組轉化為 集合
      
name_tuple = ("a", "b", 'c')
name_set = set(name_tuple)      
name_list = ['a', 'b', 'c']
name_set = set(name_list)      
name_list = list(name_set) # 集合轉換為清單
print(name_list)      
7,因為集合是去重的,所有對集合做多的用法就是去重

Mysql中去重的方法有distinct,group by (分組)
python中關于去重的方式就是轉化成集合,然後在轉化回去。
注意的是,如果字元串想轉化為集合,需要先轉化成清單,然後再轉化成集合。      

8:... in ... 判斷是否包含某個元素

b = 'abcdefg'
print('c' in b)

c = ['a','b','c']
print('d' in c)

d = 'h','i'
print('i' in d)