集合添加元素python_Python 集合(Set)

Python 集合(Set)

在本文中,您將學習關于Python集的所有內容;如何創建它們、添加或刪除其中的元素,以及在Python中對集合執行的所有操作。

Python中的集合是什么?

集合是項目的無序集合。每個元素都是唯一的(沒有重復項),并且必須是不可變的(不能更改)。

但是,集合本身是可變的。我們可以在其中添加或刪除項目。

集合可用于執行數學集合運算,例如并集,交集,對稱差等。

如何創建集合?

通過將所有項目(元素)放在大括號{}中并用逗號分隔或使用內置函數來創建集合set()。

它可以具有任意數量的項目,并且它們可以具有不同的類型(整數,浮點數,元組,字符串等)。但是集合不能具有可變元素(例如list,set或dictionary)作為其元素。

示例# 整數集

my_set = {1, 2, 3}

print(my_set)

# 混合數據類型集

my_set = {1.0, "Hello", (1, 2, 3)}

print(my_set)

也嘗試以下示例。

示例# 無重復集合

# 輸出: {1, 2, 3, 4}

my_set = {1,2,3,4,3,2}

print(my_set)

#set不能包含可變項

#這里[3,4]是可變列表

#如果您取消注釋第12行,

#這將導致錯誤。

# TypeError: unhashable type: 'list'

#my_set = {1, 2, [3, 4]}

# 我們可以從列表中生成集合

# 輸出: {1, 2, 3}

my_set = set([1,2,3,2])

print(my_set)

創建一個空集有點特殊。

空括號{}將在Python中創建一個空字典。為了建立一個沒有任何元素的集合,我們使用沒有任何參數的set()函數。

示例# 用{}初始化

a = {}

# 檢查a的數據類型

# 輸出:

print(type(a))

# 初始化使用 set()

a = set()

# 檢查a的數據類型

# 輸出:

print(type(a))

如何在Python中更改集合?

集是可變的。但是由于它們是無序的,因此索引沒有意義。

我們無法使用索引或切片來訪問或更改集合的元素。集不支持它。

我們可以使用add()方法添加單個元素,使用update()方法添加多個元素。update()方法可以采用元組,列表,字符串或其他集合作為其參數。在所有情況下,都避免重復。

示例# 初始化 my_set

my_set = {1,3}

print(my_set)

# 如果取消注釋第9行,

# 你會得到一個錯誤

# TypeError: 'set' object does not support indexing

#my_set[0]

# 增加一個元素

# 輸出: {1, 2, 3}

my_set.add(2)

print(my_set)

# 增加多個元素

# 輸出: {1, 2, 3, 4}

my_set.update([2,3,4])

print(my_set)

# 增加 list 和set

# 輸出: {1, 2, 3, 4, 5, 6, 8}

my_set.update([4,5], {1,6,8})

print(my_set)

運行該程序時,輸出為:{1, 3}

{1, 2, 3}

{1, 2, 3, 4}

{1, 2, 3, 4, 5, 6, 8}

如何從集合中刪除元素?

可以使用discard()和remove()方法從集合中刪除特定項目。

兩者之間的唯一區別是,如果使用discard(),而項目不存在于集合中,則它保持不變。但是remove()在這種情況下會引發錯誤。

以下示例將說明這一點。

示例# 初始化 my_set

my_set = {1, 3, 4, 5, 6}

print(my_set)

# 拋棄一個元素

# 輸出: {1, 3, 5, 6}

my_set.discard(4)

print(my_set)

# 移除已個元素

# 輸出: {1, 3, 5}

my_set.remove(6)

print(my_set)

# 拋棄一個元素

# 沒有出現在 my_set

# 輸出: {1, 3, 5}

my_set.discard(2)

print(my_set)

# remove一個元素

# 沒有出現在 my_set

# 如果沒有注釋#my_set.remove(2),

# 會拋出一個錯誤.

# Output: KeyError: 2

#my_set.remove(2)

同樣,我們可以使用pop()方法刪除并返回一個項目。

集合為無序,無法確定將彈出哪個項目。這是完全任意的。

我們還可以使用clear()方法刪除集合中的所有項目。

示例# 初始化 my_set

# 輸出: 唯一元素集

my_set = set("HelloWorld")

print(my_set)

# pop一個元素

# 輸出: 隨機元素

print(my_set.pop())

# pop 任意元素

# Output:隨機元素

my_set.pop()

print(my_set)

# 清空 my_set

#輸出: set()

my_set.clear()

print(my_set)

Python 集合操作

集合可用于執行數學集合運算,例如并集,交集,差和對稱差。我們可以通過運算符或方法來實現。。

讓我們考慮以下兩組用于以下操作。>>> A = {1, 2, 3, 4, 5}

>>> B = {4, 5, 6, 7, 8}

集合并集

set-union.jpg

A和B的并集是來自這兩個集合的所有元素的集合。

并集是使用|操作符執行的。也可以使用union()方法來完成。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 | 運算符

# 輸出: {1, 2, 3, 4, 5, 6, 7, 8}

print(A | B)

在Python shell上嘗試以下示例。# 使用union 函數

>>> A.union(B)

{1, 2, 3, 4, 5, 6, 7, 8}

# 在B上使用并集函數

>>> B.union(A)

{1, 2, 3, 4, 5, 6, 7, 8}

集合相交

set-intersection.jpg

A和B的交集是在這兩個集合中共有的一組元素。

交點使用&運算符執行。使用intersection()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 & 運算符

# 輸出 : {4, 5}

print(A & B)

在Python shell上嘗試以下示例。# 在A上使用交集函數

>>> A.intersection(B)

{4, 5}

# 在B上使用交集函數

>>> B.intersection(A)

{4, 5}

集合差異

set-difference.jpg

A和B的差(A-B)是僅在A中但不在B中的一組元素。類似地,B-A是B中但不在A中的一組元素。

差異是使用 -運算符執行的。使用difference()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 在A上使用 - 運算符

# Output: {1, 2, 3}

print(A - B)

在Python shell上嘗試以下示例。# 在A上使用差異函數

>>> A.difference(B)

{1, 2, 3}

# 在B上使用-運算符符

>>> B - A

{8, 6, 7}

# 在B上使用差異函數

>>> B.difference(A)

{8, 6, 7}

集合對稱差異

set-symmetric-difference.jpg

A和B的對稱差異是A和B中的一組元素,但兩者中的元素相同。

對稱差使用^運算符執行。使用symmetric_difference()方法可以完成相同的操作。

示例# 初始化 A 和 B

A = {1, 2, 3, 4, 5}

B = {4, 5, 6, 7, 8}

# 使用 ^ 運算符

# 輸出: {1, 2, 3, 6, 7, 8}

print(A ^ B)

在Python shell上嘗試以下示例。# 在A上使用symmetric_difference函數

>>> A.symmetric_difference(B)

{1, 2, 3, 6, 7, 8}

# 在B上使用symmetric_difference函數

>>> B.symmetric_difference(A)

{1, 2, 3, 6, 7, 8}

不同的Python集合方法

集合方法很多,上面已經使用了其中的一些方法。這是set對象可用的所有方法的列表。Python Set方法方法描述

將元素添加到集合中

從集合中刪除所有元素

返回集合的副本

返回兩個或多個集合的差作為新集合

如果元素是成員,則從集合中刪除它。(如果元素不在集合中,則不執行任何操作)

返回兩個集合的交集作為新集合

True如果兩個集合的交點為空,則返回

返回 True另一個集合是否包含此集合

返回 True此集合是否包含另一個集合

刪除并返回一個任意的set元素。提高KeyError,如果集合為空

從集合中刪除一個元素。如果元素不是成員,則引發一個KeyError

返回新集合中集合的并集

用自身和其他元素的并集更新集合

其他集合操作

集合會員資格測試

我們可以使用in關鍵字來測試項目是否存在于集合中。

示例# 初始化 my_set

my_set = set("apple")

# 檢查“a”是否存在

# 輸出: True

print('a' in my_set)

# 檢查“p”是否存在

# 輸出: False

print('p' not in my_set)

遍歷集合

使用for循環,我們可以遍歷集合中的每個項目。>>> for letter in set("apple"):

... print(letter)

...

a

p

e

l

集合與內置函數

內置函數如all()、any()、enumerate()、len()、max()、min()、sort()、sum()等常用來與set一起執行不同的任務。帶內置功能功能描述

如果集合的所有元素都為true(或者集合為空),則返回True。

如果集合中的任何元素為true,則返回True。 如果集合為空,則返回False。

返回一個枚舉對象。它包含成對的所有項的索引和值。

返回集合中的長度(項目數)。

返回集合中最大的項目。

返回集合中最小的項目。

從集合中的元素返回一個新的排序列表(不對集合本身進行排序)。

返回集合中所有元素的總和。

Python Frozenset

Frozenset是具有集合特征的新類,但是一旦分配,就不能更改其元素。元組是不可變列表,而凍結集是不可變集。

可變的集合不可散列,因此不能用作字典鍵。另一方面,frozenset是可哈希化的,可用作字典的鍵。

此數據類型支持的方法,如copy(),difference(),intersection(),isdisjoint(),issubset(),issuperset(),symmetric_difference()和union()。由于不可變,因此沒有添加或刪除元素的方法。

示例# 初始化 A 和 B

A = frozenset([1, 2, 3, 4])

B = frozenset([3, 4, 5, 6])

在Python shell上嘗試這些示例。>>> A.isdisjoint(B)

False

>>> A.difference(B)

frozenset({1, 2})

>>> A | B

frozenset({1, 2, 3, 4, 5, 6})

>>> A.add(3)

...

AttributeError: 'frozenset' object has no attribute 'add'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一個極其高效的虛擬機內存冗余消除機制:UKSM

Linux內核機制KSM(Kernel Samepage Merging)能合并KVM虛擬機之間相同內存的頁面,被CentOS, RHEL之類的服務器內核廣泛采用,但是其速度很慢。UKSM(Ultra KSM)是國人在此基礎上的極大改進。通過使用了更高級的算法,UKSM的新特性包括&#xff1a…

【分享】 codeReview 的重要性

研發都知道代碼 Review 的重要性,在代碼 Review 也越來越受大家重視,我參與了大量的代碼 Review,明顯地感受到有效的代碼 Review 不但能提高代碼的質量,更能促進團隊溝通協作,建立更高的工程質量標準,無論對…

FFMPEG功能

FFMPEG功能1. 視頻音頻格式轉換Ffmpeg能使用任何支持的格式和協議作為輸入:*比如你可以輸入YUV文件:ffmpeg -i /tmp/test%d.Y /tmp/out.mpg 它將要使用如下文件: /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,/tmp/test1.Y, /tmp…

線程02

2019獨角獸企業重金招聘Python工程師標準>>> 線程中有幾個方法需要我們區分 1 sleep方法是表示線程執行到這的時候只是暫時處于“睡眠”狀態,在這種狀態下線程是不會釋放CPU資源的,當到達休眠時間后,線程繼續“起來”干活。當線程…

@postconstruct注解方法沒有執行_把對象的創建交給spring來管理(注解IOC)

自動按照類型注入/** * 賬戶的業務層實現類 * * 曾經XML的配置&#xff1a; * <bean id"accountService" class"com.itheima.service.impl.AccountServiceImpl" * scope"" init-method"" destroy-method""> * <pro…

解決-ubuntu 安裝redis無法啟動

解決-ubuntu 安裝redis無法啟動 環境 Ubuntu 16.04 Port 6379 Redis version 5:4.0.9-1 1-安裝 apt install redis2-安裝完成-自啟時提示啟動服務失敗 Errors were encountered while processing:redis-serverredis E: Sub-process /usr/bin/dpkg returned an error code (1…

JavaScript中的數據類型轉換

js數據類型轉換 使用&#xff1a;Number&#xff08;&#xff09;、parseInt() 和parseFloat&#xff08;&#xff09; 做類型轉換 Number()強轉一個數值(包含整數和浮點數)。*parseInt()強轉整數&#xff0c;*parseFloat&#xff08;&#xff09;強轉浮點數函數isNaN()檢測參…

web.xml(8)_jsp-config

13.jsp-config jsp-config元素主要用來設定JSP的相關配置,<jsp:config>包含<taglib>和<jsp-property-group>兩個子元素.當中<taglib>元素 在JSP 1.2時就已經存在了;而<jsp-property-group>是JSP 2.0新增的元素. taglib :對標記庫描寫敘述符文件&…

CABAC之手把手教你編碼

首先要說明的是CABAC的生命期是SLICE,因此本篇所講的也是一個SLICE里CABAC的流程,其次對于我們來說場模式幾乎用不到,所以本文的編碼流程只使用幀模式,因此實際上用到的表只有277個, 當然如果我寫成399, 不是說里面所有表都用到的. 這里只是聲明一下這個問題, 如果大家實際操作…

python網絡攻擊代碼_Python-python網絡編程寫arp攻擊代碼

from scapy.all import ARP,send,arping import sys,re,random,time stdoutsys.stdout ip IPADDR"192.168.1.102" 網關 gateway_ip"192.168.1.1" tmp[] 偽造網關mac地址 for i in range(0,6): tmp.append(str("%02x"%random.randint(0x01,0xfe))…

Kubernetes初步學習

今天分享如題&#xff1a; Kubernetes 本篇內容源于工作項目需要自學 但K8s確實現在十分的主流so推薦給大家 最近更新緩慢由于工作太忙惹&#xff0c;忙里偷閑整理愿分享能與君共勉&#x1f4aa; 大家新年快樂&#x1f389; &#x1f508;言歸正題&#xff0c;相信很多朋友…

手機界面常見的的九宮格

手機界面常見的的九宮格 手機界面常見的的九宮格 首先布局的話需要用到一個mainactivity和一個item的布局目前用得最多也最熟悉的還是LinearLayout布局所以&#xff0c;一下也是&#xff0c;按套路就不過多贅述了。 <GridView android:layout_width"wrap_content"…

JavaScript中的運算符

js運算符 算 字 賦 比 邏 位 它算術運算符 - * / --字符串連接 賦值運算 - %比較運算符 < > > < ! !邏輯運算符 && || !位運算 ^ & | << >>其它運算符 ? : 三元運算符 delete&#xff1…

CABAC編碼

H&#xff0e;264&#xff0f;AVC標準采用了很多新技術和新方法&#xff0c;大大提高了視頻編碼效率&#xff0c;其中CABAC便是H&#xff0e;264&#xff0f;AVC采用的新型熵編碼方法之一。CABAC采用了高效的算術編碼思想&#xff0c;同時充分考慮了視頻流相關統計特性&#xf…

【教程分享】Jmeter入門教程

好&#xff01;回歸學長每周的教程分享&#xff01; PART2 >今天又來分享Jmter 因為最近好像有相關工作內容 提前準備資修一下 分享僅供參考- JMeter的作用對軟件做壓力測試 1.能夠對HTTP和FTP服務器進行壓力和性能測試&#xff0c; 也可以對任何數據庫進行同樣的測試&…

linux 特殊shell變量

特殊變量 環境變量&#xff1a; 系統本身運行需要由linux系統提前創建好的一類變量 主要用于用戶的工作環境&#xff0c;包括&#xff08;用戶的宿主目錄&#xff0c;命令的查找路徑&#xff0c;用戶的當前目錄&#xff0c;登錄的終端等&#xff09;環境變量的值由操作系統本身…

JavaScript中的循環

js循環 程序中進行有規律的重復性操作&#xff0c;需要用到循環語句。 break 和 continue 語句對循環中的代碼執行提供了更嚴格的控制。 for循環 for(var i0;i<len;i){...... }while循環 var i0;while(i<8){......i;}for-in 語句 for-in 語句是嚴格的迭代語句&…

快速傅里葉變換python_FFT快速傅里葉變換的python實現過程解析

FFT是DFT的高效算法&#xff0c;能夠將時域信號轉化到頻域上&#xff0c;下面記錄下一段用python實現的FFT代碼。 # encodingutf-8 import numpy as np import pylab as pl # 導入和matplotlib同時安裝的作圖庫pylab sampling_rate 8000 # 采樣頻率8000Hz fft_size 512 # 采樣…

rabbitmq的安裝全過程

2019獨角獸企業重金招聘Python工程師標準>>> 1 首先下載安裝依賴elang 添加yum支持 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm rp…

【框架學習分享】HttpRunner

今天文章分為兩部分 :) PART1 HttpRunner內容分享/ PART2 關于后廠村兒 10 Minutes HttpRunner: PART 1 首先感謝作者開源&#x1f44d; 因為最近工作需要用到HttpRunner&#xff0c; 于是便趁著周末學了下這個測試框架&#xff0c;感覺還可以~ 所以分享一下今天的學習記…