pythonset實現
『壹』 set在python中是什麼意思
在Python set是基本數據類型的一種集合類型,它有可變集合(set())和不可變集合(frozenset)兩種。
創建集合set、集合set添加、集合刪除、交集、並集、差集的操作都是非常實用的方法。set是一個無序的元素集合,支持並、交、差及對稱差等數學運算,但由於set不記錄元素位置,因此不支持索引、分片等類序列的操作。
python 中list,tuple,dict,set是最常用的集合類型。
list列表,相當於一個數組,不過list的長度是自動變化的而且列表元素自由的,不必每個元素都是同一種類型。它的簡潔的定義方式是a=[]。有序組合
tuple也是一個組合。不過tuple在定義好之後就不能再變化。它的簡潔的定義方式是a=1,3也可以是a=(1,3).有序組合。
dict是字典類型。也就是鍵值對類型。鍵名不可以重復,並且不可以變化(字元串就符合這個要求,常用字元串作為鍵名)。它的簡潔的定義方式是a={}.無序組合(意思就是你無法按照添加的順序對他進行遍歷)。
set是set類型(不好翻譯,用的也少)。也是一個無序的組合,元素是互斥的,也就不會出現相同的元素。可以把一個序列轉換成無重復元素的set.無序組合。
『貳』 python中set是什麼意思
在Python set是基本數據類型的一種集合類型,它有可變集合(set())和不可變集合(frozenset)兩種。
創建集合set、集合set添加、集合刪除、交集、並集、差集的操作都是非常實用的方法。set是一個無序的元素集合,支持並、交、差及對稱差等數學運算,但由於set不記錄元素位置,因此不支持索引、分片等類序列的操作。
tuple算是list和str的雜合(雜交的都有自己的優勢,上一節的末後已經顯示了),那麼set則可以堪稱是list和dict的雜合。
set擁有類似dict的特點:可以用{}花括弧來定義;其中的元素沒有序列,也就是是非序列類型的數據;而且,set中的元素不可重復,這就類似dict的鍵,set也有一點list的特點:有一種集合可以原處修改。
以上內容參考網路-Python
『叄』 python集合的使用怎麼樣的
Python set 集合最常用的操作是向集合中添加、刪除元素,以及集合之間做交集、並集、差集等運算。
向set集合中添加元素
set 集合中添加元素,可以使用 set 類型提供的 add() 方法實現,該方法的語法格式為:
1
setname.add(element)
其中,setname 表示要添加元素的集合,element 表示要添加的元素內容。
需要注意的是,使用 add() 方法添加的元素,只能是數字、字元串、元組或者布爾類型(True 和 False)值,不能添加列表、字典、集合這類可變的數據,否則 Python 解釋器會報 TypeError 錯誤。例如:
1
2
3
4
5
a = {1,2,3}
a.add((1,2))
print(a)
a.add([1,2])
print(a)
運行結果為:
1
2
3
4
5
{(1, 2), 1, 2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in
a.add([1,2])
TypeError: unhashable type: 'list'
從set集合中刪除元素
刪除現有 set 集合中的指定元素,可以使用 remove() 方法,該方法的語法格式如下:
1
setname.remove(element)
使用此方法刪除集合中元素,需要注意的是,如果被刪除元素本就不包含在集合中,則此方法會拋出 KeyError 錯誤,例如:
1
2
3
4
5
a = {1,2,3}
a.remove(1)
print(a)
a.remove(1)
print(a)
運行結果為:
1
2
3
4
5
{2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in
a.remove(1)
KeyError: 1
『肆』 python--set(集合)
一、創建集合
創建非空集合:集合中set括弧中需要的參數的數據類型有:序列(包括字元串、列表、元組),字典可以轉為集合,注意數值類型不能作為集合的參數,如int類型。
二、添加元素
add() 方法是將要添加的元素作為一個整體添加到集合中
update() 方法是把要傳入的元素拆分成單個字元,存於集合中,並去掉重復的
三、刪除元素
集合的刪除操作使用的方法跟列表是一樣的,使用的也是 remove 方法,只能單個刪除
四、遍歷集合
五、集合與字元串、列表、元組互轉,集合轉字典
六、查找元素並刪除
函數原型: a.discard(b)
參數說明:a為一個set類型的變數;b表示要查找並刪除的元素
函數作用:在集合setVar中查找element元素,如果存在則刪除;如果沒找到,則什麼也不做。該函數沒有返回值
七、pop用法
函數原型: set1.pop() 刪除並返回集合set1中的第一個元素,如果為空引發KeyError錯誤+
八、clear、和len的用法
clear 方法用於清空集合中的所有元素
方法用於集合拷貝
len 跟求序列的長度的函數len()是一樣的,返回的是集合中有多少個元素
九、求集合的交集、並集、差集和difference的用法
求集合的 交集 使用的符號是 「&」
求集合的 並集 用的是符號 「|」
求集合的 差集 使用的符號是減號 「-」
difference 等價於集合的差集 ,查看兩個集合的不同之處。這種不同指的是集合s1相對於集合s2,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素組成的新集合
十、運算符判斷集合間關系和issuperset、issubset的用法
集合可以使用大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、等於(==)、不等於(!=)來判斷某個集合是否完全包含於另一個集合,也可以使用子父集判斷函數。
issuperset 集合st1是否是集合st2的父集
issubset 集合st1是否是集合st2的子集
十一、不可變集合frozenset的用法
frozenset 該集合中的內容是不可改變的,其他功能及操作跟可變集合set一樣
『伍』 python中set的使用
最簡單一句話:set是無序的,不支持切片
str(sorted(set(r_james))[0:3]))
sorted先進行排序並返回一個列表,對列表進行切片。。而樓主更改過後,直接對set進行切片,set是無序的,不支持切片
『陸』 怎樣設計python腳本實現redis的set命令
#!/usr/bin/python
#coding=utf-8
import redis
class CRedis:
def __init__(self):
self.host = 'localhost'
self.port = 6379
self.db = 0
self.r = redis.Redis(host = self.host, port = self.port, db = self.db)
#1. strings 類型及操作
#設置 key 對應的值為 string 類型的 value
def set(self, key, value):
return self.r.set(key, value)
#設置 key 對應的值為 string 類型的 value。如果 key 已經存在,返回 0,nx 是 not exist 的意思
def setnx(self, key, value):
return self.r.setnx(key, value)
#設置 key 對應的值為 string 類型的 value,並指定此鍵值對應的有效期
def setex(self, key, time, value):
return self.r.setex(key, time, value)
#設置指定 key 的 value 值的子字元串
#setrange name 8 gmail.com
#其中的 8 是指從下標為 8(包含 8)的字元開始替換
def setrange(self, key, num, value):
return self.r.setrange(key, num, value)
#獲取指定 key 的 value 值的子字元串
def getrange(self, key, start ,end):
return self.r.getrange(key, start, end)
#mget(list)
def get(self, key):
if isinstance(key, list):
return self.r.mget(key)
else:
return self.r.get(key)
#刪除
def remove(self, key):
return self.r.delete(key)
#自增
def incr(self, key, default = 1):
if (1 == default):
return self.r.incr(key)
else:
return self.r.incr(key, default)
#自減
def decr(self, key, default = 1):
if (1 == default):
return self.r.decr(key)
else:
return self.r.decr(key, default)
#2. hashes 類型及操作
#根據email獲取session信息
def hget(self, email):
return self.r.hget('session', email)
#以email作為唯一標識,增加用戶session
def hset(self, email, content):
return self.r.hset('session', email, content)
#獲取session哈希表中的所有數據
def hgetall(self):
return self.r.hgetall('session')
#刪除hashes
def hdel(self, name, key = None):
if(key):
return self.r.hdel(name, key)
return self.r.hdel(name)
#清空當前db
def clear(self):
return self.r.flushdb()
#3、lists 類型及操作
#適合做郵件隊列
#在 key 對應 list 的頭部添加字元串元素
def lpush(self, key ,value):
return self.r.lpush(key, value)
#從 list 的尾部刪除元素,並返回刪除元素
def lpop(self, key):
return self.r.plush(key)
if __name__ == '__main__':
r = CRedis()