set python_Python基本数据类型之set

一、定义

set是一个无序且不重复的元素集合。

集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。

set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:

不重复

元素为不可变对象

二、创建

s = set()

s = {11,22,33,44} #注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典

a=set('boy')

b=set(['y', 'b', 'o','o'])

c=set({"k1":'v1','k2':'v2'})

d={'k1','k2','k2'}

e={('k1', 'k2','k2')}

print(a,type(a))

print(b,type(b))

print(c,type(c))

print(d,type(d))

print(e,type(e))

OUTPUT:

{'o', 'b', 'y'}

{'o', 'b', 'y'}

{'k1', 'k2'}

{'k1', 'k2'}

{('k1', 'k2', 'k2')}

三、基本操作

比较

se = {11, 22, 33}

be = {22, 55}

temp1 = se.difference(be) #找到se中存在,be中不存在的集合,返回新值

print(temp1) #{33, 11}

print(se) #{33, 11, 22}

temp2 = se.difference_update(be) #找到se中存在,be中不存在的集合,覆盖掉se

print(temp2) #None

print(se) #{33, 11},

删除

discard()、remove()、pop()

se = {11, 22, 33}

se.discard(11)

se.discard(44) # 移除不存的元素不会报错

print(se)

se = {11, 22, 33}

se.remove(11)

se.remove(44) # 移除不存的元素会报错

print(se)

se = {11, 22, 33} # 移除末尾元素并把移除的元素赋给新值

temp = se.pop()

print(temp) # 33

print(se) # {11, 22}

取交集

se = {11, 22, 33}

be = {22, 55}

temp1 = se.intersection(be) #取交集,赋给新值

print(temp1) # 22

print(se) # {11, 22, 33}

temp2 = se.intersection_update(be) #取交集并更新自己

print(temp2) # None

print(se) # 22

判断

se = {11, 22, 33}

be = {22}

print(se.isdisjoint(be)) #False,判断是否不存在交集(有交集False,无交集True)

print(se.issubset(be)) #False,判断se是否是be的子集合

print(se.issuperset(be)) #True,判断se是否是be的父集合

合并

se = {11, 22, 33}

be = {22}

temp1 = se.symmetric_difference(be) # 合并不同项,并赋新值

print(temp1) #{33, 11}

print(se) #{33, 11, 22}

temp2 = se.symmetric_difference_update(be) # 合并不同项,并更新自己

print(temp2) #None

print(se) #{33, 11}

取并集

se = {11, 22, 33}

be = {22,44,55}

temp=se.union(be) #取并集,并赋新值

print(se) #{33, 11, 22}

print(temp) #{33, 22, 55, 11, 44}

更新

se = {11, 22, 33}

be = {22,44,55}

se.update(be) # 把se和be合并,得出的值覆盖se

print(se)

se.update([66, 77]) # 可增加迭代项

print(se)

集合的转换

se = set(range(4))

li = list(se)

tu = tuple(se)

st = str(se)

print(li,type(li))

print(tu,type(tu))

print(st,type(st))

OUTPUT:

[0, 1, 2, 3]

(0, 1, 2, 3)

{0, 1, 2, 3}

四、源码

class set(object):

"""

set() -> new empty set object

set(iterable) -> new set object

Build an unordered collection of unique elements.

"""

def add(self, *args, **kwargs):

"""添加"""

"""

Add an element to a set.

This has no effect if the element is already present.

"""

pass

def clear(self, *args, **kwargs):

"""清除"""

""" Remove all elements from this set. """

pass

def copy(self, *args, **kwargs):

"""浅拷贝"""

""" Return a shallow copy of a set. """

pass

def difference(self, *args, **kwargs):

"""比较"""

"""

Return the difference of two or more sets as a new set.

(i.e. all elements that are in this set but not the others.)

"""

pass

def difference_update(self, *args, **kwargs):

""" Remove all elements of another set from this set. """

pass

def discard(self, *args, **kwargs):

"""删除"""

"""

Remove an element from a set if it is a member.

If the element is not a member, do nothing.

"""

pass

def intersection(self, *args, **kwargs):

"""

Return the intersection of two sets as a new set.

(i.e. all elements that are in both sets.)

"""

pass

def intersection_update(self, *args, **kwargs):

""" Update a set with the intersection of itself and another. """

pass

def isdisjoint(self, *args, **kwargs):

""" Return True if two sets have a null intersection. """

pass

def issubset(self, *args, **kwargs):

""" Report whether another set contains this set. """

pass

def issuperset(self, *args, **kwargs):

""" Report whether this set contains another set. """

pass

def pop(self, *args, **kwargs):

"""

Remove and return an arbitrary set element.

Raises KeyError if the set is empty.

"""

pass

def remove(self, *args, **kwargs):

"""

Remove an element from a set; it must be a member.

If the element is not a member, raise a KeyError.

"""

pass

def symmetric_difference(self, *args, **kwargs):

"""

Return the symmetric difference of two sets as a new set.

(i.e. all elements that are in exactly one of the sets.)

"""

pass

def symmetric_difference_update(self, *args, **kwargs):

""" Update a set with the symmetric difference of itself and another. """

pass

def union(self, *args, **kwargs):

"""

Return the union of sets as a new set.

(i.e. all elements that are in either set.)

"""

pass

def update(self, *args, **kwargs):

""" Update a set with the union of itself and others. """

pass

def __and__(self, *args, **kwargs):

""" Return self&value. """

pass

def __contains__(self, y):

""" x.__contains__(y) <==> y in x. """

pass

def __eq__(self, *args, **kwargs):

""" Return self==value. """

pass

def __getattribute__(self, *args, **kwargs):

""" Return getattr(self, name). """

pass

def __ge__(self, *args, **kwargs):

""" Return self>=value. """

pass

def __gt__(self, *args, **kwargs):

""" Return self>value. """

pass

def __iand__(self, *args, **kwargs):

""" Return self&=value. """

pass

def __init__(self, seq=()): # known special case of set.__init__

"""

set() -> new empty set object

set(iterable) -> new set object

Build an unordered collection of unique elements.

# (copied from class doc)

"""

pass

def __ior__(self, *args, **kwargs):

""" Return self|=value. """

pass

def __isub__(self, *args, **kwargs):

""" Return self-=value. """

pass

def __iter__(self, *args, **kwargs):

""" Implement iter(self). """

pass

def __ixor__(self, *args, **kwargs):

""" Return self^=value. """

pass

def __len__(self, *args, **kwargs):

""" Return len(self). """

pass

def __le__(self, *args, **kwargs):

""" Return self<=value. """

pass

def __lt__(self, *args, **kwargs):

""" Return self

pass

@staticmethod

def __new__(*args, **kwargs):

""" Create and return a new object. See help(type) for accurate signature. """

pass

def __ne__(self, *args, **kwargs):

""" Return self!=value. """

pass

def __or__(self, *args, **kwargs):

""" Return self|value. """

pass

def __rand__(self, *args, **kwargs):

""" Return value&self. """

pass

def __reduce__(self, *args, **kwargs):

""" Return state information for pickling. """

pass

def __repr__(self, *args, **kwargs):

""" Return repr(self). """

pass

def __ror__(self, *args, **kwargs):

""" Return value|self. """

pass

def __rsub__(self, *args, **kwargs):

""" Return value-self. """

pass

def __rxor__(self, *args, **kwargs):

""" Return value^self. """

pass

def __sizeof__(self):

""" S.__sizeof__() -> size of S in memory, in bytes """

pass

def __sub__(self, *args, **kwargs):

""" Return self-value. """

pass

def __xor__(self, *args, **kwargs):

""" Return self^value. """

pass

__hash__ = None

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值