python 集合操做方法詳解

 說集合以前,咱們先說一個小例子,假設某公司有五我的喜歡打籃球,五我的喜歡打遊戲,問即打遊戲有打籃球html

的人都有哪些?python

play_basketball = ['a','b','c','d','e']
play_game = ['a','b','c','f','g']
both_play=[]
for name in play_basketball:
    if name in play_game:
        both_play.append(name)
print(both_play)
結果:
['a', 'b', 'c']

  在不瞭解集合以前咱們確定以上面的方法解決問題,可是學了集合以後,咱們就有更簡單的方法了,是什麼呢?讓咱們慢慢了解。python3.x

集合set

  集合用於包含一組無序的對象。與列表和元組不一樣,集合是無序的,也沒法經過數字進行索引。此外,集合中的元素不能重複。set和dict同樣,只是沒有value,至關於dict的key集合,因爲dict的key是不重複的,且key是不可變對象所以set也有以下特性:app

  1. 不重複,(互異性),也就是說集合是天生去重的
  2. 元素爲不可變對象,(肯定性,元素必須可hash)
  3. 集合的元素沒有前後之分,(無序性)

 

   首先籠統的講一下python3.x集合的內置函數有17個,分別以下:函數

序號 函數 描述
1

add(self, *args, **kwargs)spa

 是把要傳入的元素作爲一個整個添加到集合中
2

clear(self, *args, **kwargs)3d

 清空集合裏面的全部元素
3

copy(self, *args, **kwargs)code

複製集合裏面的全部元素 ,返回一個淺複製
4

difference(self, *args, **kwargs)htm

求兩個集合裏面的不一樣的元素 ,又稱差
5

difference_update(self, *args, **kwargs)對象

 返回刪除了 set 「集合2」中含有的元素後的 set 「集合1」 
6

discard(self, *args, **kwargs)

 若是在 set 「集合」中存在元素 x, 則刪除 
7

intersection(self, *args, **kwargs)

求兩個集合裏面相同的元素,又稱並 ,

返回只保留含有 set 「集合2」中元素的 set 「集合1」 

8

intersection_update(self, *args, **kwargs)

 ,

返回只保留含有 set 「集合2」中元素的 set 「集合1」 ,並更新本身

9

isdisjoint(self, *args, **kwargs)

 判斷兩個集合是否是不相交,並返回
10

issubset(self, *args, **kwargs)

 判斷集合是否是包含其餘集合,等同於a>=b
11

issuperset(self, *args, **kwargs)

判斷集合是否是被其餘集合包含,等同於a<=b 
12

pop(self, *args, **kwargs)

 刪除而且返回 set 「集合」中的一個不肯定的元素, 若是爲空則引起 KeyError 
13

remove(self, *args, **kwargs)

 從 set 「集合」中刪除元素 , 若是不存在則引起 KeyError 
14

symmetric_difference(self, *args, **kwargs)

 返回一個新的 set 包含 外面 和 裏面 中不重複的元素

也就是兩個集合不重複的元素 

15

symmetric_difference_update(self, *args, **kwargs)

 返回含有 set 「裏面」或者 set 「外面」中有而不是二者都有的元素的 set 「外面」 
16

union(self, *args, **kwargs)

把兩個集合鏈接起來,又稱並 
17

update(self, *args, **kwargs)

 能夠在集合裏面添加多項

 

1,定義集合

#第一種方法
nums = [1,2,3,4,5,6,7]
num_set = set(nums)
print(num_set)
結果:
{1, 2, 3, 4, 5, 6, 7}

#第二種方法
num_set ={1,2,3,4,5,6,7}

  

2,增(更新)

set.add()  

set.update([])

nums = {1,2,3,4,5,6,7}
#set.add()增長只能增長一個,不能增長多個值
# nums.add(8)
# print(nums)
#set.update()能夠增長一個字符串,能夠增長多個值
# nums.update([8])
# print(nums)
# nums.update('8')
# print(nums)
nums.update([8,9,10])
print(nums)

  

3,刪

set1.remove(1)

nums = {1,2,3,4,5,6,7}
nums.remove(7)
print(nums)
結果:
{1, 2, 3, 4, 5, 6}

  

4,查:沒法經過下標索引

5,改:不可變類型沒法修改元素

6,交( &)

nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#交的方式一:&
a = nums1&nums2
print(a)
#並的方式二:intersaction
b = nums1.intersection(nums2)
print(b)

結果:
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}

  

7,並(|)

nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#並的方式一:|
a = nums1|nums2
print(a)
#並的方式二:uniom
b = nums1.union(nums2)
print(b)

結果:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

  

8,差(-)

nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#差的方式一:-
a1 = nums1-nums2
print(a1)
a2 = nums2-nums1
print(a2)
#差的方式二:difference
b1 = nums1.difference(nums2)
print(b1)
b2 = nums2.difference(nums1)
print(b2)

結果:
{6}
{8, 9, 10, 7}
{6}
{8, 9, 10, 7}

  

9,對稱差集(^)

nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#對稱差集表示方法一:^
a1 = nums1^nums2
print(a1)
#對稱差集表示方法二:symmetric_difference
a2 = nums2.symmetric_difference(nums1)
print(a2)

結果:
{6, 7, 8, 9, 10}
{6, 7, 8, 9, 10}

10,集合轉換

se = set(range(4))
li = list(se)
tu = tuple(se)
st = str(se)
print(li,type(li))
print(tu,type(tu))
print(st,type(st))

結果:
[0, 1, 2, 3] <class 'list'>
(0, 1, 2, 3) <class 'tuple'>
{0, 1, 2, 3} <class 'str'>

補充:frozenset

  冰凍集合,是一種特殊的集合類型,也是集合(集合是列表的話,冰凍集合就是元組)

  下面建立冰凍集合(通常不會建立空的冰凍集合)

  同時下面包含函數的補充

#建立帶數據的冰凍集合
info = frozenset(('xuexi','gongzuo','kaoyan','xiuxi'))
print(info,type(info))
#成員監測
result = 'gongzuo' in info
print(result)
#遍歷冰凍集合
for i in info:
    print(i)
#集合推導式(沒法獲得冰凍集合,能夠獲得集合,列表,元組,字典類型)
result = {i for i in info}
print(result,type(result))

#函數
#冰凍集合能夠使用集合的函數(不修改集合自己的函數均可以使用)
info = frozenset(('xuexi','gongzuo','kaoyan','xiuxi'))

#copy()
result = info.copy()
print(result)

#集合操做  交集,並集,差集,對稱差集等  不修改冰凍集合自己就能使用:冰凍集合的操做結果都是冰凍集合
info = frozenset(('xuexi','gongzuo','kaoyan','xiuxi'))
info2 = {'xuexi','gongzuo','kaoyan','xiuxi'}
#冰凍集合操做
result = info.union(info2)
print(result)

#普通集合操做(冰凍集合是參考集合)
result = info2.union(info)
print(result)

  

 

字符串操做方法詳解,請看下面博客:http://www.cnblogs.com/wj-1314/p/8419009.html

字典操做方法詳解,請看下面博客:http://www.cnblogs.com/wj-1314/p/8421724.html

列表操做方法詳解,請看下面博客:http://www.cnblogs.com/wj-1314/p/8433116.html

相關文章
相關標籤/搜索