溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在python項(xiàng)目中使用set集合

發(fā)布時(shí)間:2021-03-23 15:47:51 來(lái)源:億速云 閱讀:161 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

如何在python項(xiàng)目中使用set集合?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

定義

定義:在{}中用逗號(hào)隔開(kāi),集合具備以下3個(gè)特點(diǎn):

1.每個(gè)元素必須是不可變類型

2.集合內(nèi)沒(méi)有重復(fù)元素

3.集合內(nèi)元素?zé)o序

my_set = {1, 2, 3, 4}
# 本質(zhì)上
my_set = set({1, 2, 3, 4})

# 注意1:列表是索引對(duì)應(yīng)值,字典是key對(duì)應(yīng)值,均可以取得單個(gè)值.
# 而集合類型既沒(méi)有索引也沒(méi)有key值相對(duì)應(yīng),所以無(wú)法取得單個(gè)的值.對(duì)集合來(lái)說(shuō)
# 主要功能在于去重與關(guān)系元素,沒(méi)有取出單個(gè)值的需求
# 注意2:{}既被用于定義字典也被用于定義集合.但是字典內(nèi)的元素必須以key:value的形式.
# 如何準(zhǔn)確的定義一個(gè)空集合?
my_set = {}
print(type(my_set))
my_set = set()
print(type(my_set))>>>
<class 'dict'>
<class 'set'>

類型轉(zhuǎn)換

但凡能被for循環(huán)遍歷輸出的值(輸出的值不能為可變數(shù)據(jù)類型)

my_set = set([1, 2, 3, 4, 5])  >>>{1, 2, 3, 4, 5}
my_set = set('string')     >>>{'t', 's', 'g', 'i', 'r', 'n'}
my_set = set((1, 2, 3, 4, 1))  >>>{1, 2, 3, 4}
my_set = set({'name':'yyh'})  >>>{'name'}

關(guān)系運(yùn)算

friends1 = {'Albert', 'Tony', 'John', 'Egon', 'Sean'}
friends2 = {'Sean', 'Sor', 'Egon'}
print(friends1 | friends2) # 求合集
print(friends1 & friends2) # 求交集
print(friends1 - friends2) # 求差集 friends1中獨(dú)有的
print(friends2 - friends1) # 求差集 friends2中獨(dú)有的
print(friends1 ^ friends2) # 對(duì)稱差集(去掉共有的好友后的合集)
print(friends1 == friends2) # 集合是否相等

print({1, 2, 3} >= {1, 2, 3}) # 包含關(guān)系
print({1, 2, 3} > {1, 2}) # 真包含關(guān)系
print({1, 2} < {1, 2, 3}) # 真子集
print({1, 2, 3} <= {1, 2, 3}) # 子集

去重

# 集合去重復(fù)有局限性,僅適用于不可變數(shù)據(jù)類型
# 集合本身是無(wú)序的, 去重之后無(wú)法保留原來(lái)的順序
my_list = ['a', 'b', 1, 'a', 'b']
my_set = set(my_list)  # 列表轉(zhuǎn)集合
print(my_set)
my_list = list(my_set) # 集合轉(zhuǎn)列表
print(my_list)     # 去除了重復(fù),但是打亂了順序
# 針對(duì)可變類型,并且保證順序則需要自己寫(xiě)代碼實(shí)現(xiàn)
my_list = [
  {'name': 'lili', 'age': 18, 'sex': 'male'},
  {'name': 'jack', 'age': 73, 'sex': 'male'},
  {'name': 'tom', 'age': 20, 'sex': 'female'},
  {'name': 'lili', 'age': 18, 'sex': 'male'},
  {'name': 'lili', 'age': 18, 'sex': 'male'},
]
new_list = []
for i in my_list:
  if i not in new_list:
    new_list.append(i)

print(new_list)

練習(xí)

pythons = {'jason', 'egon', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}

print(f'即報(bào)名了python又報(bào)名了linux的學(xué)員有{pythons & linuxs}')
print(f'所有報(bào)名的學(xué)員{pythons | linuxs}')
print(f'只報(bào)名了python的學(xué)員{pythons - linuxs}')
print(f'只報(bào)名了其中一門的學(xué)員{pythons ^ linuxs}')

關(guān)于如何在python項(xiàng)目中使用set集合問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI