最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python內(nèi)置數(shù)據(jù)類型中的集合詳解

 更新時間:2022年03月18日 16:22:44   作者:江南野梔子  
這篇文章主要為大家詳細(xì)介紹了Python內(nèi)置數(shù)據(jù)類型中的集合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. 集合 set 簡介

集合的最大特征是其每個元素都是唯一的,它可以刪除、可以增加、也可以通過增刪實現(xiàn)替換元素,但是它是沒有下標(biāo)的,你無法通過下標(biāo)或者切片功能訪問集合。因為集合就像一個袋子里面裝著顏色不一樣的玻璃球,你可以替換玻璃球,但是無法指定玻璃球存放的地點。

它最大的作用,就是它元素的唯一,它經(jīng)常被用來清除多余的數(shù)據(jù)。

1.1 使用 { } 直接創(chuàng)建集合

可以使用 {} 直接創(chuàng)建集合,但是不能使用 {} 創(chuàng)建空集合,因為 {} 被用來創(chuàng)建空字典。你只能通過 set() 來創(chuàng)建空集合。

1.2 使用 set() 函數(shù)創(chuàng)建集合

使用內(nèi)置函數(shù) set,可以快速的將其他類型的可迭代對象轉(zhuǎn)換成 集合 對象。這些可迭代對象,可以是字符串、列表、元組等等。

print("創(chuàng)建一個空集合")
print(set())
str1 = 'ABCDEF!'
s=set(str1)
print("*"*40)
print("一個由字符串轉(zhuǎn)換的集合,每個元素即唯一的單獨字符")
print(s)
list1 = [0,1,2,3,4,3,2,1]
s=set(list1)
print("*"*40)
print("一個由列表轉(zhuǎn)換的集合,但是在列表中重復(fù)的元素只會出現(xiàn)一次")
print(s)

2. 集合沒有切片功能!

請仔細(xì)理解,集合沒有切片功能,這意味著什么,這意味著無法對它排序(當(dāng)然可以轉(zhuǎn)換成列表再排序),意味著無法用 while 循環(huán)配合下標(biāo)依次獲得元素,你可以用 for 循環(huán)獲取。

3. 處理集合的常見內(nèi)置函數(shù)

3.1  len 函數(shù)

len 函數(shù)返回集合的長度,即元素的個數(shù)。

3.2  map 函數(shù)

map 函數(shù)對集合中的每個元素進(jìn)行相同的操作,然后返回一個 map 對象,再使用 set 函數(shù)可以得到集合

>>> a
{'sdf', 'er'}
>>> set(map(lambda x:x+"-",a))
{'er-', 'sdf-'}

3.3  filter 函數(shù)

filter 函數(shù)對集合中的每個元素進(jìn)行相同的操作,符合條件的元素才留下來,返回一個 filter 類型的對象。

>>> a
{'sdf', 'er'}
>>> set(filter(lambda x:len(x)==2,a))
{'er'}

3.4  reduce 函數(shù)

filter 函數(shù)依次對集合中的元素進(jìn)行相同的迭代操作最后得到一個對象。

>>> import functools
>>> a
{'sdf', 'er'}
>>> functools.reduce(lambda x,y:x+"~"+y,a)
'sdf~er'

3.5  sum 函數(shù)

sum 函數(shù),只對元素是數(shù)值的集合有效,返回列表中的元素總和,如果元素類型不是數(shù)值,則返回 TypeError。

3.6  max 函數(shù)

max 函數(shù),返回集合中的元素最大值。

3.7  min 函數(shù)

min 函數(shù),返回集合中的元素最小值。

>>> a={1,2,3}
>>> sum(a)
6
>>> min(a)
1
>>> max(a)
3
>>> 

3.8  sorted 函數(shù)

sorted 函數(shù)會對集合按照指定方式進(jìn)行排序,請注意,使用 sorted 函數(shù)會得到一個排好序的列表,不是集合?。。≡喜粫淖?。

list1 = [0,1,2,3,4,3,2,1]
s=set(list1)
s1=sorted(s)
print(s1)
print(type(s1))

3.9 enumerate 函數(shù)

enumerate 函數(shù)可以將一個集合依次取出。

3.10 any 函數(shù)

any() 函數(shù)用于判斷給定的集合的所有元素是否都為 False,則返回 False,如果有一個為 True,則返回 True。

3.11 all 函數(shù)

all() 函數(shù)用于判斷給定的集合的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。

4. 集合的內(nèi)置方法

4.1  .add(val) 

.add(val) 方法附加一個元素 val,如果 val 已經(jīng)在集合中,那么原來的集合不變化。

4.2  .clear() 

.clear() 方法將集合清空。 

4.3  .copy()

.copy() 方法將返回集合的拷貝(而不是和原來的列表共用同一個地址)。 

4.4  .difference(set1,set2,...)

difference() 方法用于返回集合的差集,即返回的集合元素包含在第一個集合中,但不包含在第二、三、N個集合(方法的參數(shù))中。

4.5  .difference_update(set1,set2,...)

difference_update() 方法用于移除兩個或者多個集合中都存在的元素。

difference_update() 方法與 difference() 方法的區(qū)別在于 difference() 方法返回一個移除相同元素的新集合,而 difference_update() 方法是直接在原來的集合中移除元素,沒有返回值。

# 集合的使用
a={1,2,3,4,1}
b={4,5,6,7}
# 1.集合是不會有重復(fù)的元素的
print("1. ",a)
# 2.集合使用 add 方法加一個元素
a.add("6")
print("2. ",a)
# 3.集合使用 clear 方法清空
a.clear()
print("3. ",a)
a={1,2,3,4}
# 4.集合使用 copy 方法復(fù)制數(shù)據(jù)
c=a.copy()
print("4. ",c)
# 5.集合使用 difference 方法返回
#   和其他集合不一樣的數(shù)據(jù)
print("5. ",a.difference(b))
# 6.集合使用 difference_update 方法刪除
#   和其他集合一樣的數(shù)據(jù)
# a={1,2,3,4}
# b={4,5,6,7}
a={1,2,3,4}
b={4,5,6,7}
print("6. ",a.difference_update(b))
print("6. ",a)
a={1,2,3,4}
c={1}
a.difference_update(b,c)
print("6. ",a)
# 7.集合使用 discard 方法刪掉數(shù)據(jù) val
a={1,2,3,4}
a.discard(2)
print("7. ",a)

4.6  .discard(val)

.discard 方法刪除集合中指定的元素。

4.7  .intersection(set1,set2,...)

.intersection 方法返回集合的交集,自身不受影響。

4.8  .intersection_update()

.intersection 方法原地改變自身為兩個或者多個集合的交集。

>>> a={1,2,3,4,5}
>>> b={2,3,4,5,6,7}
>>> a.intersection(b)
{2, 3, 4, 5}
>>> a
{1, 2, 3, 4, 5}
>>> b
{2, 3, 4, 5, 6, 7}
>>> a.intersection_update(b)
>>> a
{2, 3, 4, 5}
>>> b
{2, 3, 4, 5, 6, 7}

4.9  .isdisjoint()

.isdisjoint 方法判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。

>>> a={1,2,3,4,5}
>>> b={2,3,4,5,6,7}
>>> c={"a","b"}
>>> a.isdisjoint(b)
False
>>> a.isdisjoint(c)
True

4.10 .issubset(other_set)

.issubset 方法判斷自身集合是否為該方法參數(shù)集合 other_set 的子集。

>>> a={1,2,3,4,5}
>>> b={2,3,4,5,6,7}
>>> c={1}
>>> a.issubset(b)
False
>>> a.issubset(c)
False
>>> c.issubset(a)
True

4.11 .issuperset(other_set)

.issuperset 方法判斷該方法參數(shù)集合 other_set 是否為自身集合的子集。

>>> a={1,2,3,4,5}
>>> b={2,3,4,5,6,7}
>>> c={1}
>>> a.issuperset(b)
False
>>> a.issuperset(c)
True

4.12 .pop()

.pop() 方法將返回集合中的一個元素,原集合將刪除該元素。

請注意,集合中的 pop 方法是沒有 index 參數(shù)!如果像使用列表中的 pop 方法輸入 index 參數(shù),則返回 TypeError: pop() takes no arguments (1 given) 錯誤。

4.13 .remove()

.remove(val) 方法將刪除集合中的 val 元素,返回為空。如果 val 不在集合中,則返回 KeyError 錯誤。

4.14 .symmetric_difference()

返回兩個集合中不重復(fù)的元素集合,而不改變自身集合。

4.15 .symmetric_difference_update()

移除當(dāng)前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當(dāng)前集合中。

# 10.集合使用 ^ 操作符返回
#   兩個集合中不一樣的數(shù)據(jù)
# 等同于 symmetric_difference方法
a={1,2,3,4}
b={4,5,6,7}
tmp=a^b
print("10. ",tmp) 
print("a==>",a)
print("b==>",b)
print("使用 ^ 操作符 原來的集合不受影響")
print("*"*60)
print("a.symmetric_difference(b)==>",a.symmetric_difference(b))
print("a==>",a)
print("b==>",b)
print("使用 symmetric_difference方法 原來的集合不受影響")
print("*"*60)
print("a.symmetric_difference_update(b)==>",a.symmetric_difference_update(b))
print("使用 symmetric_difference_update 原來的集合會改變")
print("a==>",a)
print("b==>",b)
print("*"*60)

4.16 .union(other_set)

.union 方法返回兩個集合的并集,而不改變自身集合。

4.17 .update(other_set)

.update 方法給自身集合集合添加元素。

>>> a={0,1}
>>> b={3,4}
>>> c={5,6}
>>> a.union(b)
{0, 1, 3, 4}
>>> a
{0, 1}
>>> b
{3, 4}
>>> a.update(b)
>>> a
{0, 1, 3, 4}
>>> b
{3, 4}

5. 集合和運算符

5.1 - 運算符

a 、b 是兩個集合;a - b類似于 a.difference(b) 方法,即返回集合a中包含而集合b中不包含的元素,自身不受改變。

>>> a={0,1,2,3}
>>> b={2,3,4,5}
>>> a-b
{0, 1}
>>> a.difference(b)
{0, 1}

5.2 | 運算符

a 、b 是兩個集合;a | b類似于 a.union(b) 方法,即返回集合a和b中所有的元素,自身不受改變。

>>> a={0,1,2,3}
>>> b={2,3,4,5}
>>> a|b
{0, 1, 2, 3, 4, 5}
>>> a.union(b)
{0, 1, 2, 3, 4, 5}

5.3 & 運算符

a 、b 是兩個集合;a & b類似于 a.intersection(b) 方法,即返回集合a和b中都包含了的元素,自身不受改變。

# 9.集合使用 & 選出集合重疊的部分
#   等同于 insection 方法
a={1,2,3,4}
b={4,5,6,7}
print("*********  初始數(shù)據(jù)  ***********")
print("a==>",a)
print("b==>",b)
print("8. a & b==>",a & b)
print("執(zhí)行 a & b 后")
print("a==>",a)
print("b==>",b)
print("使用 & 操作符 原來的集合不受影響")
print("*"*60)
print("8. a.intersection(b)==>",a.intersection(b))
print("使用 intersection 方法 原來的集合不受影響")
print("a==>",a)
print("b==>",b)
print("*"*60)
print("8. a.intersection_update(b)==>",a.intersection_update(b))
print("使用 intersection_update 方法 原來的集合會改變")
print("a==>",a)
print("b==>",b)
print("*"*60)

5.4 ^ 運算符

a 、b 是兩個集合;a ^ b類似于 a.symmetric_difference(b) 方法,即返回不同時包含于a和b的元素,自身不受改變。

>>> a={0,1,2,3}
>>> b={2,3,4,5}
>>> a.symmetric_difference(b)
{0, 1, 4, 5}
>>> a^b
{0, 1, 4, 5}

5.5 in 、not in 運算符

in 運算符判斷某個元素屬于某個集合

not in 運算符判斷某個元素不屬于某個集合

>>> a={0,1,2,3}
>>> 0 in a
True
>>> "0" in a
False

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

  • jupyter閃退怎么辦?jupyter閃退問題的解決

    jupyter閃退怎么辦?jupyter閃退問題的解決

    這篇文章主要介紹了jupyter閃退怎么辦?jupyter閃退問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解tensorflow實現(xiàn)遷移學(xué)習(xí)實例

    詳解tensorflow實現(xiàn)遷移學(xué)習(xí)實例

    本篇文章主要介紹了詳解tensorflow實現(xiàn)遷移學(xué)習(xí)實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python中第三方庫Faker的使用詳解

    Python中第三方庫Faker的使用詳解

    在如今的大數(shù)據(jù)時代,數(shù)據(jù)的價值可想而知。有時候為了做測試,需要模擬真實的環(huán)境,但是又不能直接使用真實數(shù)據(jù),就需要我們認(rèn)為制造一些數(shù)據(jù)出來。這時候就要來說說Python這的Faker庫了,快跟隨小編來學(xué)習(xí)一下這個庫吧
    2022-04-04
  • python怎么調(diào)用自己的函數(shù)

    python怎么調(diào)用自己的函數(shù)

    在本篇文章里小編給大家分享了關(guān)于python調(diào)用自己的函數(shù)的實例方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-07-07
  • python 返回列表中某個值的索引方法

    python 返回列表中某個值的索引方法

    今天小編就為大家分享一篇python 返回列表中某個值的索引方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python爬取B站關(guān)注列表及數(shù)據(jù)庫的設(shè)計與操作

    python爬取B站關(guān)注列表及數(shù)據(jù)庫的設(shè)計與操作

    這篇文章主要為大家介紹了python爬取B站關(guān)注列表及數(shù)據(jù)庫的設(shè)計與操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • django中的數(shù)據(jù)庫遷移的實現(xiàn)

    django中的數(shù)據(jù)庫遷移的實現(xiàn)

    這篇文章主要介紹了django中的數(shù)據(jù)庫遷移的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python Socket多線程并發(fā)原理及實現(xiàn)

    Python Socket多線程并發(fā)原理及實現(xiàn)

    這篇文章主要介紹了Python Socket多線程并發(fā)原理及實現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 淺談Python實現(xiàn)2種文件復(fù)制的方法

    淺談Python實現(xiàn)2種文件復(fù)制的方法

    這篇文章主要介紹了淺談Python實現(xiàn)2種文件復(fù)制的方法,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python中文分詞+詞頻統(tǒng)計的實現(xiàn)步驟

    python中文分詞+詞頻統(tǒng)計的實現(xiàn)步驟

    詞頻統(tǒng)計就是輸入一段句子或者一篇文章,然后統(tǒng)計句子中每個單詞出現(xiàn)的次數(shù),下面這篇文章主要給大家介紹了關(guān)于python中文分詞+詞頻統(tǒng)計的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評論

星子县| 莒南县| 彩票| 句容市| 藁城市| 来安县| 洛川县| 沙洋县| 新丰县| 历史| 永城市| 洛宁县| 静宁县| 武强县| 临江市| 光山县| 封开县| 清原| 友谊县| 靖宇县| 静乐县| 安多县| 乌鲁木齐市| 德令哈市| 察雅县| 咸丰县| 淳安县| 衡阳县| 嘉荫县| 合肥市| 福清市| 基隆市| 怀柔区| 和田市| 高密市| 涞水县| 伊宁县| 嵊州市| 西平县| 新蔡县| 民丰县|