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()