python基礎-基本數據類型深入-2.2

目錄

集合

集合的定義

集合操作

集合的內建函數

集合與內置函數

集合練習-1

集合練習-2

集合練習-3

集合

集合的定義

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

Python 中的集合是什么?

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

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

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

如何創建集合?

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

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

dic1 = {1, 2, 3}
dic2 = {1.0, (1, 2, 3), 'Hello'}
print(dic1)
print(dic2)輸出:
{1, 2, 3}
{1.0, (1, 2, 3), 'Hello'}

# 無重復集合
my_set = {1,2,3,4,3,2}
print(my_set)# 我們可以從列表中生成集合
my_set = set([1,2,3,2])
print(my_set)輸出:
{1, 2, 3, 4}
{1, 2, 3}

創建一個空集有點特殊。

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

x = {} # 用{}初始化
print(type(x)) # 檢查a的數據類型x = set() # 初始化使用 set()
print(type(x)) # 檢查a的數據類型輸出:
<class 'dict'>
<class 'set'>

集合操作

如何在 Python 中更改集合?

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

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

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

# 初始化 my_set
my_set = {1,3}
print(my_set)# 增加一個元素
my_set.add(2)
print(my_set)# 增加多個元素
my_set.update([2,3,4])
print(my_set)# 增加 list、set、tuple
my_set.update([4,5], {1,6,8},(9,10))
print(my_set)輸出:
{1, 3}
{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6, 8, 9, 10}

從集合中刪除元素

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

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

set_1 = {1,2,3,"hello"}
print(set_1.remove(1))
print(set_1)set_1.discard("hello")
print(set_1)輸出:
None
{2, 3, 'hello'}
{2, 3}

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

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

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

set_2 = {"shell",2,5,"bash"}set_2.pop() # 使用pop方法刪除一個元素,并且隨機輸出!
print(set_2)set_2.clear() #使用clear方法刪除所有的元素
print(set_2)輸出:
{2, 5, 'shell'}
set()

Python 集合操作

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

集合并集

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

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

# 初始化 A 和 B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}# 使用 | 運算符
print(A | B)#使用union()方法進行并集操作
print(A.union(B))
print(B.union(A))輸出:
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}

集合相交

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

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

x = {1,2,3,4,5,6}
y = {4,5,6,7,8,9}#使用&進行交集操作
print(x & y)#使用intersection()方法進行交集
print(x.intersection(y))
print(y.intersection(x))輸出:
{4, 5, 6}
{4, 5, 6}
{4, 5, 6}

集合差異

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

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

x = {1,2,3,4,5,6}
y = {4,5,6,7,8,9}print(x - y)
print(x.difference(y))print(y - x)
print(y.difference(x))輸出:
{1, 2, 3}
{1, 2, 3}
{8, 9, 7}
{8, 9, 7}

集合對稱差異

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

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

x = {1,2,3,4,5,6}
y = {4,5,6,7,8,9}print(x ^ y)
print(y ^ x)print(x.symmetric_difference(y))
print(y.symmetric_difference(x))輸出:
{1, 2, 3, 7, 8, 9}
{1, 2, 3, 7, 8, 9}
{1, 2, 3, 7, 8, 9}
{1, 2, 3, 7, 8, 9}

集合的內建函數

不同的 Python 集合方法

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

方法描述
add()將元素添加到集合中
clear()從集合中刪除所有元素
copy()返回集合的副本
difference()返回兩個或多個集合的差作為新集合
difference_update()從該集合中刪除另一個集合的所有元素
discard()如果元素是成員,則從集合中刪除它。(如果元素不在集合中,則不執行任何操作)
intersection()返回兩個集合的交集作為新集合
intersection_update()用自身和另一個的交集更新集合
isdisjoint()如果兩個集合的交點為空,則返回 True,否則返回 False。
issubset()返回 True 另一個集合是否包含此集合
issuperset()返回 True 此集合是否包含另一個集合
pop()刪除并返回一個任意的 set 元素。如果集合是空的,調用 pop() 方法將會引發 KeyError 異常!
remove()從集合中刪除一個元素。如果元素不是成員,則引發一個 KeyError
symmetric_difference()將兩個集合的對稱差作為新集合返回
symmetric_difference_update()用本身和另一個的對稱差異更新一個集合
union()返回新集合中集合的并集
update()用自身和其他元素的并集更新集合

其他集合操作

集合會員資格測試

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

# 初始化 my_set
my_set = set("apple")# 檢查“a”是否存在
print('a' in my_set)# 檢查“p”是否存在
print('p' not in my_set)輸出:
True
False

遍歷集合 使用 for 循環,我們可以遍歷集合中的每個項目。(由于集合是無序的,運行結果順序可能不同)

for x in set("hello"):print(x)輸出:
h
o
e
l

集合與內置函數

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

功能描述
all()如果集合的所有元素都為 True(或者集合為空),則返回 True。
any()如果集合中的任何元素為 True,則返回 True。 如果集合為空,則返回False。
enumerate()返回一個枚舉對象。它包含成對的所有項的索引和值。
len()返回集合中的長度(項目數)。
max()返回集合中最大的項目。
min()返回集合中最小的項目。
sorted()從集合中的元素返回一個新的排序列表(不對集合本身進行排序)。
sum()返回集合中所有元素的總和。

Python Frozenset

frozenset 是 Python 中的一種數據類型,類似于 set,但具有不可變性,即一旦創建后不能被修改。與 set 不同,frozenset 是一種不可變集合。

set 類型不同,frozenset 類型的對象可以作為字典的 key,也可以作為另一個集合的元素,這是因為 frozenset 是不可變的,具有哈希值,可以進行哈希運算。

可以使用函數 Frozenset() 創建 Frozensets 。

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

# 初始化 A 和 B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])print(A.isdisjoint(B)) # (使用isdisjoint()函數來判斷兩個集合是否存在交集,如果存在返回false,反之返回true!)
print(A.difference(B)) # (差集)
print(A | B) # union()輸出:
False
frozenset({1, 2})
frozenset({1, 2, 3, 4, 5, 6})

集合練習-1
集合中最大的元素描述
輸入一個非空集合 my_set,輸出 my_set 中最大的元素。
my_set = eval(input())'''
print(max(my_set))
# 直接使用max函數!
''''''
print(sorted(my_set)[-1])
使用 sorted(my_set) 對集合中的元素進行排序,并取最后一個元素(即最大值),最后將其打印出來!
'''多種解法

集合練習-2
集合運算描述
給你三個集合 my_dict1、my_dict2 和 my_dict3,輸出在前兩個集合中都存在,但不在第三個集合中的元素個數。
my_set1 = eval(input())
my_set2 = eval(input())
my_set3 = eval(input())
'''
意思就是求set1和set2的交集,再求與set3的差集!(輸出差集的個數)
'''
print(len((my_set1 & my_set2) - my_set3))

集合練習-3
集合中絕對值小于 10 的元素之和描述
給你一個整數集合 my_set,輸出集合中絕對值小于 10 的元素之和。
my_set = eval(input())
sum_abs_lt_10 = sum(x for x in my_set if abs(x) < 10)
print(sum_abs_lt_10)'''
這段代碼實現了以下功能:1. eval(input()): 通過 input() 函數提示用戶輸入一個表達式,然后 eval() 函數將這個表達式作為 Python 代碼進行求值,得到一個集合對象并將其賦值給變量 `my_set`。
用戶輸入的表達式應該是一個包含整數元素的集合,例如 `{1, 2, 3, 4, 5}`。2. sum(x for x in my_set if abs(x) < 10): 這段代碼使用列表推導式來計算集合 `my_set` 中絕對值小于 10 的元素之和。具體地,對于集合 `my_set` 中的每個元素 `x`,
只有當 `x` 的絕對值小于 10 時,才將這個 `x` 累加到求和結果中。3. print(sum_abs_lt_10): 最后,將上一步計算得到的絕對值小于 10 的元素之和打印輸出。
'''

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

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

相關文章

掌握Go語言:探索Go語言中的變量,靈活性與可讀性的完美結合(4)

想要編寫簡潔高效的Go語言代碼嗎&#xff1f;掌握變量的使用是關鍵&#xff01;Go語言的變量聲明方式多樣&#xff0c;包括var關鍵字和短變量聲明&#xff0c;同時支持類型推斷&#xff0c;讓代碼更加清晰易讀。 變量聲明方式 在Go語言中&#xff0c;變量的聲明方式有兩種&am…

少兒編程 中國電子學會C++等級考試一級歷年真題答案解析【持續更新 已更新82題】

C 等級考試一級考綱說明 一、能力目標 通過本級考核的學生&#xff0c;能對 C 語言有基本的了解&#xff0c;會使用順序結構、選擇結構、循環結構編寫程序&#xff0c;具體用計算思維的方式解決簡單的問題。 二、考核目標 考核內容是根據軟件開發所需要的技能和知識&#x…

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3071. Minimum Operations to Write the Letter Y on a Grid 1. 解題思路 這一題思路上也是比較直接的&#xff0c;就是首先找到這個Y字符&#xff0c;然后…

單詞規律00

題目鏈接 單詞規律 題目描述 注意點 pattern只包含小寫英文字母s只包含小寫英文字母和 ’ ’s不包含任何前導或尾隨對空格s中每個單詞都被 單個空格 分隔 解答思路 本題與上一次同構字符串類似&#xff0c;思路可以參照同構字符串 代碼 class Solution {public boolean …

工作流/任務卸載相關開源論文分享

decima-sim 概述&#xff1a; 圖神經網絡強化學習處理多工作流 用的spark的仿真環境&#xff0c;mit的論文&#xff0c;價值很高&#xff0c;高被引&#xff1a;663倉庫地址&#xff1a;https://github.com/hongzimao/decima-sim論文&#xff1a;https://web.mit.edu/decima/co…

企業財務規劃的未來:自動化智能化如何推動全面預算管理

隨著自動化和智能化對企業的影響日益明顯&#xff0c;了解和接受那些有可能改變企業財務規劃的技術變得愈發重要。新興技術是推動企業增長和業務生產的中堅力量。作為企業財務專業人員&#xff0c;熟悉技術能夠幫助他們了解企業的未來價值&#xff0c;從而更好的領導團隊。數智…

springboot支持的常用日志框架介紹

日志系統是計算機系統中用于記錄和跟蹤事件、錯誤和信息的軟件組件。在軟件開發和維護過程中&#xff0c;日志系統起著至關重要的作用。它可以幫助開發人員了解軟件的運行情況&#xff0c;快速定位和解決問題。本文將從以下幾個方面介紹日志系統&#xff1a;日志系統概述、Spri…

Mybatis plus拓展功能-枚舉處理器

目錄 1 前言 2 使用方法 2.1 在application.yml中添加配置 2.2 定義枚舉類 2.3 在實體類和賦值時中使用 1 前言 在我們的開發過程中&#xff0c;常常需要用一些數字來表示狀態。比如說&#xff1a;1-正常&#xff0c;0-凍結。然而這樣并不能做到見名知意&#xff0c;特別是…

HTML最強入門學習筆記+GitHub小項目源碼

HTML學習筆記 GitHub項目鏈接: 點我跳轉GitHub 本博客采用markdown編寫&#xff0c;上面這個鏈接跳轉就是采用了html的<a></a>的代碼設計的跳轉提示~ 1.創建文件可以使用 ! 在VSCode中進行快速補全從而生成一整個HTML結構 HTML組成 <!DOCTYPE html><htm…

vscode——遠端配置及一些問題解決

vscode——遠端配置 安裝Remote -SSH插件配置config本地變化一些問題缺失核心關閉vscode自動更新 嘗試寫入管道不存在hostname -I 查出來的ip連不上 我們之前大概了解了vscode的本地設置&#xff0c;我們之前提過&#xff0c;vscode是一款編輯器&#xff0c;在文本編輯方面有著…

Windows安裝Neo4j數據庫教程(3.X版本)

安裝java的jdk&#xff08;jdk1.8僅支持Neo4j 3.X版本&#xff09;去 Index of /doc/neo4j/ 下載目標版本的Windows zip安裝包將安裝包解壓到任意目錄&#xff0c;并記住解壓后帶版本號的文件夾路徑添加系統環境變量&#xff0c;變量名&#xff1a;NEO4J_HOME&#xff0c;變量值…

程序員的金三銀四求職寶典:如何在關鍵時期脫穎而出?

個人主頁&#xff1a;17_Kevin-CSDN博客 隨著春天的腳步漸近&#xff0c;程序員們的求職熱潮也隨之而來。在這個被稱為“金三銀四”的招聘季&#xff0c;如何從眾多求職者中脫穎而出&#xff0c;成為了許多程序員關注的焦點。本文將為你提供一份全面的求職寶典&#xff0c;助你…

前端架構: 腳手架通用框架封裝之CommonJS和ESM混合開發兼容解決(教程五)

CommonJS 和 ESModule 混合開發 接上文&#xff0c;仍舊在 abc-cli 項目中參考&#xff1a;https://blog.csdn.net/Tyro_java/article/details/136433159現在要在腳手架項目中安裝 chalk 依賴&#xff0c;因為在 abc-cli 項目幾乎都是 CommonJS的實現而 chalk 這個依賴源碼是基…

徹底剖析激光-視覺-IMU-GPS融合SLAM算法:理論推導、代碼講解和實戰

自主導航是機器人與自動駕駛的核心功能&#xff0c;而SLAM技術是實現自主導航的前提與關鍵。現有的機器人與自動駕駛車輛往往會安裝激光雷達&#xff0c;相機&#xff0c;IMU&#xff0c;GPS等多種模態的傳感器&#xff0c;而且已有許多優秀的激光SLAM與視覺SLAM算法。但是每種…

獲取wifi內容信息(僅供學習使用,勿作他用)

文章目錄 背景代碼實現槽點槽點 1槽點2總結背景 上一篇文章我們講解學習了密碼字典生成,下面我們來看一下如何獲取wifi信息 代碼實現 下面代碼,附帶注釋,可以很清晰的看明白每一行代碼具體是什么含義,通俗易通的變量定義,已經函數調用。如有任何不明白的地方可以隨時聯…

曲線生成 | 圖解Dubins曲線生成原理(附ROS C++/Python/Matlab仿真)

目錄 0 專欄介紹1 什么是Dubins曲線&#xff1f;2 Dubins曲線原理2.1 坐標變換2.2 單步運動公式2.3 曲線模式 3 Dubins曲線生成算法4 仿真實現4.1 ROS C實現4.2 Python實現4.3 Matlab實現 0 專欄介紹 &#x1f525;附C/Python/Matlab全套代碼&#x1f525;課程設計、畢業設計、…

c語言:轉移表的實現

Hello,寶子們&#xff01;今天我們來模擬實現一下我們生活中的應用最頻繁的工具&#xff1a;計算器&#xff0c;實現計算器有三種方式。 廢話不多說&#xff0c;直接上代碼&#xff0c;計算器的一般實現&#xff1a; #include <stdio.h> int add(int a, int b)//加法函數…

Foxmail快捷鍵設置問題

當快捷鍵設置錯誤時不會生效&#xff0c;原來的快捷鍵仍有效&#xff0c;即使禁用快捷鍵功能&#xff0c;原先快捷鍵仍有效。正確的快捷鍵&#xff1a; 1. 不能是空&#xff08;NULL&#xff09; 2. 應該設置按鍵值只有一個的鍵盤按鈕。

力扣字符串篇

以下解題思路來自代碼隨想錄以及官方題解。 文章目錄 344.反轉字符串541.反轉字符串||151.反轉字符串中的單詞28.找出字符串中第一個匹配項的下標459.重復的字符串 344.反轉字符串 編寫一個函數&#xff0c;其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 s 的形式給…

怎樣查詢到pycharm終端中執行過的命令?

pycharm終端中記錄了曾經運行過的命令&#xff0c;怎樣才能查詢到全部曾經運行過的命令呢&#xff1f; 怎樣查詢到pycharm終端中執行過的命令&#xff1f;