Python中集合(set)的操作及一些比較常見的用法

? ?Python除了List、Tuple、Dict等常用數據類型外,還有一種數據類型叫做集合(set),集合的最大特點是:集合里邊的元素是不可重復的并且集合內的元素還是無序的,所以一般情況下集合常用的兩個場景是:1.去重(如:列表去重);2.關系測試(如:取交集、取并集、取差集等)

?1)集合包含一組無序的對象,可以使用set()函數來像下邊的方式一樣來創建集合

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#創建一個數值集合
set1 = set([1,2,3,4])
#創建一個字符集合  注意:從輸出結果中我們會看到l只出現了一次
set2 = set("HelloWorld!")print('set1 %s' % set1)
print('set2 %s' % set2)
'''運行結果
set1 {1, 2, 3, 4}
set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'}
'''

? 2)去重,即可能在一些特殊的場景需要用到,實現去除掉列表中的重復元素

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#列表去重比較簡單
list1 = [3,3,3,4,5,3]
set1 = set(list1)
print("list1去重后的set集合:",set1)#將如中后的集合在轉化成一個新列表
new_list = [i for i in set1]
print("list1去重后的list列表:",new_list)
'''運行結果
list1去重后的set集合: {3, 4, 5}
list1去重后的list列表: [3, 4, 5]
'''

 3)關系測試,即一些集合的最基本操作,如集合取交集、取并集、取差集、判斷一個集合是不是另一個集合的子集或者父集等。

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
set1 = set([1,2,3,4,5])
set2 = set([3,4,5,6,7])#取交集
set3 = set1.intersection(set2)
# set3 = set1 & ste2  #取交集,與上邊效果相同
print("set1和set2的交集為:",set3)#取并集
set4 = set1.union(set2)
#set4 = set1 | set2   #取并集,
print("set1和set2的交集為:",set4)#取差集    這個地方要稍稍注意一下,防止進坑
set5 = set1.difference(set2)
#set5 = set1 - set2  #取差集 
print("set1與set2的差集為:",set5)
set6 = set2.difference(set1)
print("set2與set1的差集為:",set6)#對稱差集 -----即去掉兩個集合的共同的部分
set7 = set1.symmetric_difference(set2)
#set7 = set1 ^ set2  #對稱差集
print("去掉兩個集合的共同的部分:",set7)#判斷是否是set1是否是set2的子集
flag1 = set1.issubset(set2)
print("print(判斷是否是set1是否是set2的子集):",flag1)#判斷是否是set1是否是set2的父集
flag2 = set1.issuperset(set2)
print("判斷是否是set1是否是set2的父集:",flag2)'''運行結果如下:
set1和set2的交集為: {3, 4, 5}
set1和set2的交集為: {1, 2, 3, 4, 5, 6, 7}
set1與set2的差集為: {1, 2}
set2與set1的差集為: {6, 7}
去掉兩個集合的共同的部分: {1, 2, 6, 7}
print(判斷是否是set1是否是set2的子集): False
判斷是否是set1是否是set2的父集: False
'''

 4)集合的一些其它基本操作

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#輸出集合中的元素
#注意集合與列表和元組不同,集合是無序的,所以無法通過數字進行索引獲取某一個元素的值
set1 = set([1,2,3,4])
for i in set1:print (i)#向集合中添加一個元素
set1.add(5)
print("向集合中添加一個元素5后:",set1)#刪除一個元素
set1.remove(1)
#set1.discard(1) #注意使用remove的時候必須刪除集合中存在的元素,如何元素不存在則會出錯,而使用discard則不會出現錯誤 print("從集合中刪除元素1后:",set1)#計算集合的長度 l = len(set1) print("集合的長度為:",l)#判斷某個元素是否在集合內 flag1 = 2 in set1 print("判斷元素2是否在集合內:",flag1)#斷某個元素是否不在集合內 flag2 = 3 not in set1 print("判斷元素3是否不在集合內:",flag2)#對集合進行一次淺復制 set2 = set1.copy() print("對集合進行一次淺復制:",set2)'''運行結果如下: 1 2 3 4 向集合中添加一個元素5后: {1, 2, 3, 4, 5} 從集合中刪除元素1后: {2, 3, 4, 5} 集合的長度為: 4 判斷元素2是否在集合內: True 判斷元素3是否不在集合內: False 對集合進行一次淺復制: {2, 3, 4, 5} '''

 以上是集合(set)的一些比較常用操作的示例,對于集合的一些其它操作,這里就不在一一舉例說明了。

?

轉載于:https://www.cnblogs.com/OMCloud/p/7123221.html

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

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

相關文章

php中的圖像下載函數,PHP實現的下載遠程圖片自定義函數分享

/*** PHP下載遠程圖片到本地** param $url string 遠程文件地址* param $filename string 保存后的文件名(為空時則為隨機生成的文件名,否則為原文件名)* param $fileType array 允許的文件類型* param $dirName string 文件保存的路徑(路徑其余部分根據時間系統自動…

Linux 文件的壓縮與解壓

1. tar結尾壓縮命令 [roottest ~]# tar -cvf grub.tar /boot/grub/ 查看壓縮包文件 [roottest ~]# tar -vtf grub.tar 解壓文件 #tar -xvf grub.tar # tar -xvf grub.tar -C 解壓目錄 2. gz結尾壓縮命令 # tar -zcvf grub.tar.gz /boot/grub gz結尾解壓命令 #tar -zxvf gr…

深度學習筆記-卷積神經網絡CNN與循環神經網絡RNN有什么區別?

轉載 https://blog.csdn.net/weixin_35227692/article/details/79223536轉載于:https://www.cnblogs.com/USTBlxq/p/10445268.html

參考框架 系統 基準_帶有基準的前端框架的實際比較

參考框架 系統 基準by Jacek Schae由Jacek Schae 帶有基準的前端框架的實際比較 (A Real-World Comparison of Front-End Frameworks with Benchmarks) UPDATE: There is a newer version of this article更新:本文有較新的版本 A Real-World Comparison of Front…

ppt復制切片器_零基礎小白自學PPT快速入門到精通(上)

零基礎小白如何自學PPT快速入門到精通呢?40個保姆級小技巧助力你高效掌握PPT基礎操作!PPT在學習與工作中的應用越來越廣泛:在學校時免不了要做畢業答辯、畢業論文,工作中時常要進行復盤總結、工作匯報、推廣方案,有時甚…

網絡安全初創公司SafeBreach獲1500萬美元A輪融資

今天,網絡安全初創公司 SafeBreach 宣布完成1500 萬美元 A 輪融資,新投資者德國電信、惠普公司、 Maverick Ventures 及現有投資者 Sequoia Capital 和 Shlomo Kramer 參投。公司計劃利用本輪融資加大研發力度,擴大銷售及營銷團隊&#xff0c…

php網站分區,PHP - Manual: 分區和分片 (官方文檔)

分區和分片數據庫群組是由于各種各樣的原因建立的,他可以提升處理能力、容忍錯誤,并且提升大量服務器同時工作的的性能。群組有時會組合分區和共享功能,來將大量復雜的任務分拆成更加簡單的任務,更加可控的單元。插件可以支持各種…

webBroser獲取cookie

//取當前webBrowser登錄后的Cookie值 [DllImport("wininet.dll", CharSet CharSet.Auto, SetLastError true)]static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags…

了解Linux操作系統發展階段

一、硬件與軟件發展歷史 計算機由硬件和軟件組成結構 二、Linux的發展史 Linux 操作系統是Unix操作系統的一種克隆系統。它誕生于1991年的10月5日(只是第一次正式向外公布的時間)。以后借助于Internet網絡,并經過全世界各地計算機愛好者的共同…

c gui qt 4編程第二版_面試官問Linux下如何編譯C程序,如何回答?為你編譯演示

文章來源:嵌入式大雜燴 作者:ZhengNLWindows下常用IDE來編譯,Linux下直接使用gcc來編譯,編譯過程是Linux嵌入式編程的基礎,也是嵌入式高頻基礎面試問題。一、命令行編譯及各個細分編譯過程hello.c示例代碼:…

Python基礎-----列表、元組、集合(2)

raw_input ##字符類型input##數值類型##格式化輸出注釋切片s[2:5]##切片從2開始到5,不包括5[kioskfoundation39 mnt]$ pythonPython 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2Type "help", "copyri…

調用lambda_如何使用Lambda調用上下文動態設置超時

調用lambdaby Yan Cui崔燕 如何使用Lambda調用上下文動態設置超時 (How to set timeouts dynamically using Lambda invocation context) With API Gateway and Lambda, you’re forced to use short timeouts on the server-side:使用API?? Gateway和Lambda,您不…

php+tp框架+API,php - tp框架能開發API接口嗎

怪我咯2017-04-10 17:12:231樓TP的controller其實有很多種的HproseController,JsonRpcController,RestController,RpcController,YarController我拿RestController給你介紹一下RESTFul方法的操作方法定義主要區別在于,需要對請求類型和資源類型進行判斷,…

OTL翻譯(9) --常量的SQL語句

常量的SQL語句 一個沒有綁定變量的SQL語句、SQL語句塊或是存儲過程就被稱為常量的SQL語句。OTL通過一個靜態的函數來執行這樣的SQL語句。 例如: // static otl_cursor::direct_exec()otl_cursor::direct_exec(db, // connect object"create table test_tab(f1 …

[HNOI2016]網絡 樹鏈剖分,堆

[HNOI2016]網絡 LG傳送門 表示亂搞比正解難想。 整體二分很好想吧。 但是為了好寫快樂,我們選擇三個\(\log\)的亂搞。 先樹剖,線段樹套堆維護區間最大值。對于一次修改,如果是插入,就把樹上除了這條鏈的地方加上這個重要度&#x…

python壓縮文件為zip-python 壓縮文件為zip后刪除原文件

壓縮.log 文件為zip后刪除原文件 需要注意:本人作為小白,該腳本需要和.log在一起,后面有時間需要改正。 #!/usr/local/python/bin/python #-*-codingutf8 -*- import time import os import sys import zipfile N 7 #設置刪除多少天前的文件…

css text-align-last設置末尾文本對齊方式

text-align-last:auto | start | end | left | right | center | justify auto: 無特殊對齊方式。 left: 內容左對齊。 center: 內容居中對齊。 right: 內容右對齊。 justify: 內容兩端對齊。 start&#x…

后端開發除了編碼還要做什么_每個開發人員都應掌握的基本技能(除了編碼)

后端開發除了編碼還要做什么Whether you are learning to code, looking for a new job, or just want to improve your skills as a developer, you need to master the essential tools of team collaboration. These are as important as knowing how to code.無論您是學習編…

Python中的defaultdict方法

字典(dictionary)是Python中一種常用的數據類型。不同于其他由數字索引的序列,字典是用"鍵"(key)來索引的。通常表示為dict(key: val, ...),有以下特征: 鍵可以是任何不可變&#xff…

git撤銷commit 并保存之前的修改

撤銷并保留修改 參數 –soft # 先進行commit &#xff0c;之后后悔啦$ git commit -am "對首篇報告研究員字段改為author_name"執行git log $ git logcommit 3d6788f577faba5e1d408e372031c81beee79749Author: yous <yous.com>Date: Thu Dec 14 10:08:36 2017 …