1. 程式人生 > >python學習-十二-集合

python學習-十二-集合

一.集合定義 1.set是Python中一種基本資料型別,它分為可變集合(set)和不可變集合(frozenset)兩 種。類似於其他語言,集合是一個無序不重複元素集,包括建立集合set、向集合中新增元 素、刪除集合中的元素、求集合的交集、並集、差集等操作。 2.可變集合: set集合類需要的引數必須是迭代器型別的,如:序列、字典等,然後轉換成 無序不重複的元素集。由於集合是不重複的,所以可以對字串、列表、元組 進行去重操作。 3.不可變集合: 集合中的元素不可以被改變,不能做插入和刪除操作,其他方法和可變集合基本相同。 frozenset([1, 2, 3]) 二.集合操作—建立集合 1. 建立空的集合: #coding=utf-8 #建立空集合 s = set() print s ss = set([]) print ss st = set(()) print st 2. >>> a=set("ab") >>> a set(['a', 'b']) >>> a.update("cd") >>> a set(['a', 'c', 'b', 'd']) >>> a.add('ef') >>> a set(['a', 'c', 'b', 'ef', 'd']) >>> 2.建立非空集合: 集合中set括號中需要的引數的資料型別有:序列(包括字串、列表、元組)
,字典可以轉為集合, 注意數值型別不能作為集合的引數,如int型別。 #coding=utf-8 # 字串做引數 s = set('createSet') print s # list做引數 s1 = set([1,2,3,1,3,4,5]) print s1 # 元組做引數 s2 = set((1,2,3,4,1)) print s2 # 字典做引數 #注意:字典轉set集合,需要注意的是,只取了字典的key,相當於將字典中的 dict.keys()列表轉成set集合。 s3 = set({1:2,2:3}) print s3 # set集合做引數 st = set([2, 1, 3, 4, 5, 1, 12]) ss = set(st) 3.集合操作—新增集合元素 集合的新增有兩種方式,分別是add和update。但是它們在新增元素時是有區 別的。 add()方法是將要新增的元素作為一個整體新增到集合中。 update()方法是把要傳入的元素拆分成單個字元,存於集合中,並去掉重複的 程式碼示例: #coding=utf-8 #建立一個集合 sTest = set('one') print u"初始集合:", sTest #新增一個'two'元素,並檢視結果 sTest.add('two') print u"新增元素後的集合:", sTest 程式碼示例: #coding=utf-8 #建立一個集合 sTest = set('one') print u"初始集合:", sTest #新增一個'two'元素,並檢視結果 sTest.update('two') print u"新增元素後的集合:", sTest 4.集合操作—集合刪除 集合的刪除操作使用的方法跟列表是一樣的,使用的也是remove方法。 #coding=utf-8 s = set('hello') #宣告一個可變陣列 print u"刪除前的集合:", s try : s.remove('h') except KeyError, e : print u"集合中不存在該元素!“ except: print else : print u"集合中元素刪除成功!" print u"刪除某元素後的集合:", s 5.集合操作—遍歷 #coding=utf-8 sTest = set(['e', 'two', 'o', 'n', '1', '3', '2']) #遍歷集合 for i in sTest : print i, -------------- 帶索引序號的遍歷: #coding=utf-8 sTest = set(['e', 'two', 'o', 'n', '1', '3', '2']) #遍歷集合 for index, elem in enumerate(sTest) : print u"元素的索引號為:", index, u"對應的元素為:", elem 6.集合操作—集合與序列間的轉換 集合和序列之間的轉換跟序列之間互轉是一樣的,唯一不同的就是序列轉成集合後,重複的元素被去掉了 程式碼示例:字串與集合互轉 #coding=utf-8 testStr = 'python is good' # 字串轉集合 st = set(testStr) print u"字串轉集合後:", st 集合轉字串時,直接使用str()函式進行轉換,得到的將是集合的字串形式。要想真正轉成字串,我們需要藉助字串連線函式join()函式來完成。 #coding=utf-8 testStr = 'python is good' # 字串轉集合 st = set(testStr) #print u"字串轉集合後:", st # 集合轉字串,join() s1 = ''.join(st) print s1 7.集合操作—集合與列表互轉 #coding=utf-8 listTest = [1, 2, 3, 2, 'a', 'b'] # 列表轉集合 sList = set(listTest) print sList # 集合轉列表 list1 = list(sList) print list1 8.集合操作—元組與集合互轉 #coding=utf-8 tupTest = (1, 2, 3, 2, 'a', 'b', 'a') # 元組轉集合 sTup = set(tupTest) print sTup # 集合轉元組 tup = tuple(sTup) print tup 9.集合操作—查詢元素並刪除 函式原型: setVar.discard(element) 引數說明: setVar :為一個set型別的變數 element :表示要查詢並刪除的元素 函式作用: 在集合setVar中查詢element元素,如果存在則刪除;如果沒找到,則什麼也不做。該函式沒有返回值 #coding=utf-8 sList = set([1, 2, 3, 4, 5]) #在集合中查詢元素1,找到後刪除,不返 回 sList.discard(1)
print sList 10.集合操作—pop函式 函式原型: s.pop() 引數說明: s:為set型別的變數 函式作用: 刪除並返回集合s中的第一個元素,如果為空引發KeyError錯誤 #coding=utf-8 sList = set([1, 2, 3, 4, 5]) #在集合中查詢第一個元素,找到後刪除並返回 element = sList.pop() print element 11.集合操作—clear、copy和len函式 clear 方法用於清空集合中的所有元素. 程式碼示例: #coding=utf-8 sList = set([1, 2, 3, 4, 5]) #清空集合 sList.clear() print sList copy方法用於集合拷貝 程式碼示例: #coding=utf-8 s1 = set([1, 2, 3, 4, 5]) print u"集合s1的記憶體地 址為:", id(s1) s2 = s1.copy() print u"拷貝後的集合 s2:", s2 print u"集合s2的記憶體地 址為:", id(s2) len函式跟求序列的長度的函式len()是一樣的,返回的是集合中有多少個元素。 #coding=utf-8 s1 = set([1, 2, 3,4, 5]) len = len(s1) print u"集合的長 度為:", len 11.集合操作—交集 Python中求集合的交集使用的符號是“&”,返回兩個集合的共同元素組成的集合,即集合的交集。 程式碼示例: #coding=utf-8 st1 = set('python') print u"集合1:", st1 st2 = set('htc') print u"集合2:", st2 # 兩集合求交集 st3 = st1 & st2
print u"兩集合求交集的結果:", st3 12.集合操作—並集 Python中求集合的並集用的是符號“|”,返回的是兩個集合所有 的並去掉重複的元素組成的集合。 #coding=utf-8 st1 = set('python') print u"集合1:", st1 st2 = set('htc') print u"集合2:", st2 # 兩集合求並集 st3 = st1 | st2 print u"兩集合求並集的結果:", st3 13.集合操作—差集 Python中差集使用的符號是減號“-”,返回的是在集合1但不在集合 2中的元素組成的集合。 #coding=utf-8 st1 = set('python') print u"集合1:", st1 st2 = set('htc') print u"集合2:", st2 # 兩集合求差集 st3 = st1 - st2 print u"兩集合求差集的結果:",st3 14.集合操作—兩個集合的不同之處 檢視兩個集合的不同之處,使用的difference函式,等價於差集。如:s1.difference(s2) 這種不同指的是集合s1相對於集合s2,不同的地方,也就是所有在集合s1中, 而不再集合s2中的的元素組成的新集合。 #coding=utf-8 st1 = set('python') print u"集合1:", st1 st2 = set('htc') print u"集合2:", st2 # 檢視兩集合的不同 st3 = st1.difference(st2) print u"集合st1與st2的不同:", st3 15.集合操作—運算子判斷集合間關係 集合可以使用大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、等於(==)、不等於(!=)來判斷某個集合是否完全包含於另一個集合,也可以使用子父集判斷函式。 有如下三個集合: #coding=utf-8 s1 = set([1, 2, 3, 4, 5]) s2 = set([1, 2, 3, 4]) s3 = set(['1', '8', '9', '5']) ''' 大於(>)或大於等於(>=), 表示左邊集合是否完全包含右邊集合, 如集合s1是否完全包含集合s2。 ''' if s1 > s2 : print u"集合s1完全包含集合s2" else : print u"集合s1不完全包含集合s2" '''小於(<)或小於等於(<=), 表示左邊的集合是否完全包含於右邊的集 合, 如集合s1是否完全包含於集合s2。 ''' if s2 < s1 : print u"集合s2完全包含於集合s1" else : print u"集合s2不完全包含於集合s1" ''' 等於(==)、不等於(!=), 判斷兩個集合是否完全相同。 ''' if s1 == s3 : print u"集合s1與集合s3完全相同" else : print u"集合s1與集合s3不相同" 16.集合操作—函式判斷集合間關係 issuperset方法所用是判斷集合st1是否是集合st2的父集,如果是返回 True,否則返回False。 程式碼示例: #coding=utf-8 s1 = set([1, 2, 3, 4, 5]) s2 = set([2, 3]) if s1.issuperset(s2) : print u"集合s1是集合s2的父集" else : print u"集合s1不是集合s2的父集" 函式的作用是判斷集合s1是否是集合s2的子集,如果是返回True,否則返 回False。 程式碼示例: #coding=utf-8 s1 = set([1, 2, 3, 4, 5]) s2 = set([2, 3]) if s1.issubset(s2) : print u"集合s1是集合s2的子集" else : print u"集合s1不是集合s2的子集" 17.集合操作—集合的成員運算子 集合裡也可以使用成員運算子,in和not in,判斷某個物件是 否是集合中的成員。 程式碼示例: #coding=utf-8 s1 = set([1, 2, 3, 4, 5]) if 1 in s1 : print u"1是集合的成員!" else : print u"1不是集合的成員!" 18.集合操作—不可變集合 Python中還有一種不可改變的集合,那就是 frozenset,不像set集合,可以增加刪除集合中的元素,該集合中的內容是不可改變的,類似於字串、元組。如果試圖改變不可變集合中的元素,就會報AttributeError錯誤。不可變集合,除了內容不能更改外,其他功能及操作跟可變集合set一樣,不在贅述,自行練習。 程式碼示例: #coding=utf-8 f1 = frozenset('python') print f1 f2 = frozenset([1,2,3,2,44,3]) print f2

相關推薦

python學習--集合

一.集合定義 1.set是Python中一種基本資料型別,它分為可變集合(set)和不可變集合(frozenset)兩 種。類似於其他語言,集合是一個無序不重複元素集,包括建立集合set、向集合中新增元 素、刪除集合中的元素、求集合的交集、並集、差集等操作。 2.可變集合:

python學習()--魔法方法

ini 自己 rgs clas 賦值 getitem 定義 使用 object 魔法方法是指用__ __包起來的方法,可以不直接調用方法或者調用其它函數時會調用到對應的魔法方法。這種拼寫表示名字有特殊含義,不要在自己的程序中使用這種名字。先對魔法方法的幾個

python學習(自己製作模組並安裝到系統、靜態方法)

第一:自己製作模組並安裝到系統 1、建立檔案setup.py,並對這個檔案新增內容: from distutils.core import setup setup(name="xxx",version="1.0",description="xxx",author="xxx"

Python學習一) —— 前端之JavaScript

開始 mode mba html 國際 sca 執行 嵌入式 規範 轉載自http://www.cnblogs.com/liwenzhou/p/8004649.html 一、JavaScript概述   1.JavaScript的歷史 1992年Nombas開發出C-mi

Python學習四)—— 前端基礎之Bookstrap

asc script nta 學習 基本 www. red hicon 分享 一、Bootstrap介紹 Bootstrap是Twitter開源的基於HTML、CSS、JavaScript的前端框架。 它是為實現快速開發Web應用程序而設計的一套前端工具包。 它支持響應式布

python學習)寫Excel文件

pre span 學習 姓名 port style col color exc import xlwt book= xlwt.Workbook() #新建一個Excel sheet=book.add_sheet(‘sheet1‘) #加sheet頁 sheet.write

python學習)時間模塊方法

mkt def mtime time 自定義 lse color unix 時間 1、time 模塊 時間戳 從Unix元年到現在過了多少秒格式化的時間 1)獲取當前時間戳 import time print(time.time())#獲取當前時間戳 2)在一段時間後

python學習四)開發接口

接口 quest HERE cut eth 學習 ret false 數據庫 模擬一些接口,在接口沒有開發成功前,可以用它來測試 用來查詢數據 1、第一個接口 import flask,json #__name__,代表當前這個python文件 server=flask.

python學習七)郵件發送及面向對象編程(1)

() ive none 類名 學習 什麽 安全 password 一個 郵件發送 使用郵件發送功能,需要先做以下三點: 1、在郵箱設置裏面打開smtp服務 2、開啟郵箱授權碼,記住這個授權碼 3、安裝yagmail, 用 pip install yagmail-0.10.

python學習八)URL編碼和解碼&簽名規則需求練習

ufw utf rem n) obj split color sea 輸入 1、url編碼和url解碼 打開瀏覽器,輸入"python基礎教程",點擊搜索後,地址欄會有一長串的類似於 %DFBGN這種 就是url編碼對應的搜索內容,具體如下: https://www.so.

Python學習筆記_繼承

類的方法 elf 重寫 它的 smi 基礎上 調用 新功能 廣度優先   上一篇“面向對象”中簡單介紹了繼承,即一個類可以派生出子類,在這個父類裏定義的屬性、方法自動被子類繼承。子類可以重寫父類方法。繼承是為了代碼重用。這篇重點寫一下重寫父類的方法及經典類與新式類在多繼承時

Python學習筆記_多線程與多進程

方法 很多 問題 quest 磁盤 結果 gil 解鎖 ems 一、什麽是線程&進程 1、進程 (Process)   是資源的集合。其實就是程序(qq進程)。對於操作系統來說一個任務就是一個進程,例如打開瀏覽器就啟動了一個瀏覽器進程,打開word就啟動了一個wo

python學習) String

pri pre his use char oca pageinfo app str1 str1 = "This is a ‘test‘" print(str1) str1 = ‘This is a "test"‘ print(str1) str1 = "Thi

Python學習系列】pandas資料篩選和排序

在Pandas中通過.sort和.loc函式也可以實現這兩 個功能。.sort函式可以實現對資料表的排序操作,.loc函式可以實現對資料表的篩選操作。 1、排序 sort函式主要包含6個引數:columns為要進行排序的列名稱; ascending為排序的方式true為升序

學習python天,函式4 生成器

在Python中,這種一邊迴圈一邊計算的機制,稱為生成器:generator 要建立一個generator,有很多種方法。第一種方法很簡單,只要把一個列表生成式的[]改成(),就建立了一個generator: >>> L = [x * x for x in range(10)] &

Python學習系列七】pearson相關係數計算

場景:計算訓練特徵和目標之間的相關係數,用於判斷是否加入訓練。 參考程式碼: # -*- coding: utf-8 -*- import pandas as pd import time from sklearn import tree import numpy as

python學習

注意,答案只是代表是他人寫的程式碼,正確,但不一定能通過測試(比如超時),列舉出來只是它們擁有著獨到之處,雖然大部分確實比我的好 101. Symmetric Tree 題目 Given a binary tree, check whethe

python

() ati urn col nbsp div 斐波那契數 傳值 log 第二模塊學習: 生成器,叠代器,內置函數 生成器特點:只有在調用時才會生成相應的數據,運行的速度快! 示例: 1 def fil(max):#斐波那契數 2 n,a,b=0,0,1

python學習筆記(集合的使用、文件操作、字符編碼與轉碼、函數)

函數式編程 close 取值 指定編碼 mage 指定位置 lac 空白 你在 集合 集合(set):把不同的元素組成一起形成集合,是python基本的數據類型。 集合元素(set elements):組成集合的成員 為什麽需要集合? 集合的作用 1 .列表去重復數據

Python第二天 stat模塊 os.chmod方法 os.stat方法

處理 意思 pytho ati lin 進程 cti 權限掩碼 lena Python第二十二天 stat模塊 os.chmod方法 os.stat方法 stat模塊描述了os.stat(filename)返回的文件屬性列表中各值的意義,根據stat模塊讀取