欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 系统学习笔记(七)---set

程序员文章站 2022-07-16 13:05:30
...
  1. python的set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合),intersection(交),difference(差)和sysmmetricdifference(对称差集)等数学运算.
  2. sets支持xinset,len(set),和forxinset。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持indexing,slicing,或其它类序列(sequence-like)的操作。
Help on class set in module __builtin__:

class set(object)
| set() -> new empty set object
| set(iterable) -> new set object
|
| Build an unordered collection of unique elements.
|
| Methods defined here:
|
| __and__(...)
| x.__and__(y) <==> x&y
|
| __cmp__(...)
| x.__cmp__(y) <==> cmp(x,y)
|
| __contains__(...)
| x.__contains__(y) <==> y in x.
|
| __eq__(...)
| x.__eq__(y) <==> x==y
|
| __ge__(...)
| x.__ge__(y) <==> x>=y
|
| __getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
| __gt__(...)
| x.__gt__(y) <==> x>y
|
| __iand__(...)
| x.__iand__(y) <==> x&y
|
| __init__(...)
| x.__init__(...) initializes x; see help(type(x)) for signature
|
| __ior__(...)
| x.__ior__(y) <==> x|y
|
| __isub__(...)
| x.__isub__(y) <==> x-y
|
| __iter__(...)
| x.__iter__() <==> iter(x)
|
| __ixor__(...)
| x.__ixor__(y) <==> x^y
|
| __le__(...)
| x.__le__(y) <==> x<=y
|
| __len__(...)
| x.__len__() <==> len(x)
|
| __lt__(...)
| x.__lt__(y) <==> x<y
|
| __ne__(...)
| x.__ne__(y) <==> x!=y
|
| __or__(...)
| x.__or__(y) <==> x|y
|
| __rand__(...)
| x.__rand__(y) <==> y&x
|
| __reduce__(...)
| Return state information for pickling.
|
| __repr__(...)
| x.__repr__() <==> repr(x)
|
| __ror__(...)
| x.__ror__(y) <==> y|x
|
| __rsub__(...)
| x.__rsub__(y) <==> y-x
|
| __rxor__(...)
| x.__rxor__(y) <==> y^x
|
| __sizeof__(...)
| S.__sizeof__() -> size of S in memory, in bytes
|
| __sub__(...)
| x.__sub__(y) <==> x-y
|
| __xor__(...)
| x.__xor__(y) <==> x^y
|
| add(...)
| Add an element to a set.
|
| This has no effect if the element is already present.
|
| clear(...)
| Remove all elements from this set.
|
| copy(...)
| Return a shallow copy of a set.
|
| difference(...)
| 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.)
|
| difference_update(...)
| Remove all elements of another set from this set.
|
| discard(...)
| Remove an element from a set if it is a member.
|
| If the element is not a member, do nothing.
|
| intersection(...)
| Return the intersection of two or more sets as a new set.
|
| (i.e. elements that are common to all of the sets.)
|
| intersection_update(...)
| Update a set with the intersection of itself and another.
|
| isdisjoint(...)
| Return True if two sets have a null intersection.
|
| issubset(...)
| Report whether another set contains this set.
|
| issuperset(...)
| Report whether this set contains another set.
|
| pop(...)
| Remove and return an arbitrary set element.
| Raises KeyError if the set is empty.
|
| remove(...)
| Remove an element from a set; it must be a member.
|
| If the element is not a member, raise a KeyError.
|
| symmetric_difference(...)
| Return the symmetric difference of two sets as a new set.
|
| (i.e. all elements that are in exactly one of the sets.)
|
| symmetric_difference_update(...)
| Update a set with the symmetric difference of itself and another.
|
| union(...)
| Return the union of sets as a new set.
|
| (i.e. all elements that are in either set.)
|
| update(...)
| Update a set with the union of itself and others.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T



# -*- coding: cp936 -*-
print help(set)
#set(['h', 'e', 'l', 'o'])
x=set('hello')
print x
#set(['d', 'r', 'o', 'w', 'l'])
y=set('world')
print y


# 交集
print x&y
#set(['l', 'o'])


print x|y  # 并集
#set(['e', 'd', 'h', 'l', 'o', 'r', 'w'])


print x - y # 差集 
#set(['h', 'e'])


print x^y # 对称差集(项在t或s中,但不会同时出现在二者中)




a = [11,22,33,44,11,22]  
print  set(a)  
#set([33, 11, 44, 22])


print [i for i in set(a)] #去重


s=set('hello')
t=set('world')
len(s)


#set 的长度
x='h'
print x in s


#测试 x 是否是 s 的成员


x not in s


#测试 x 是否不是 s 的成员


s.issubset(t)
#s <= t
#测试是否 s 中的每一个元素都在 t 中


s.issuperset(t)
s >= t
#测试是否 t 中的每一个元素都在 s 中


s.union(t)
s | t
#返回一个新的 set 包含 s 和 t 中的每一个元素


s.intersection(t)
s & t
#返回一个新的 set 包含 s 和 t 中的公共元素


s.difference(t)
s - t
#返回一个新的 set 包含 s 中有但是 t 中没有的元素


s.symmetric_difference(t)
s ^ t
#返回一个新的 set 包含 s 和 t 中不重复的元素


s.copy()


#回 set “s”的一个浅复制



  1. 请注意:union(),intersection(),difference()和symmetric_difference()的非运算符(non-operator,就是形如s.union()这样的)版本将会接受任何iterable作为参数。相反,它们的运算符版本(operatorbasedcounterparts)要求参数必须是sets。这样可以避免潜在的错误,如:为了更可读而使用set('abc')&'cbs'来替代set('abc').intersection('cbs')。从2.3.1版本中做的更改:以前所有参数都必须是sets。
  2. 另外,Set和ImmutableSet两者都支持set与set之间的比较。两个sets在也只有在这种情况下是相等的:每一个set中的元素都是另一个中的元素(二者互为subset)。一个set比另一个set小,只有在第一个set是第二个set的subset时(是一个subset,但是并不相等)。一个set比另一个set打,只有在第一个set是第二个set的superset时(是一个superset,但是并不相等)
  3. 子set和相等比较并不产生完整的排序功能。例如:任意两个sets都不相等也不互为子set,因此以下的运算都会返回False:a<b,a==b,或者a>b。因此,sets不提供__cmp__方法。
  4. 因为sets只定义了部分排序功能(subset关系),list.sort()方法的输出对于sets的列表没有定义。