【1.16】集合set



python的set和其他语言类似, 是一个无序不重复元素集,

基本功能包括关系测试和消除重复元素.


集合对象还支持union(联合), intersection(交),

difference(差)和sysmmetric difference(对称差集)等数学运算.
sets 支持 x in set, len(set),和 for x in set。

作为一个无序的集合,sets不记录元素位置或者插入点。

因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。

定义: 就是无序 可以hash,不能重复
set创建,或者 大括号{},元素间使用逗号隔开,这两种方式都可以


b={"abc","zhanshan","yaoming"}
print b
a = set(b)
# 这里的set 中的参数只能是一个,
# 且这一个参数一定要是可以迭代的对象,
# 也就是要是能进行for循环的
# 可以是 str list 元组 字典中默认就是添加key为集合中的元素
# 因为字典默认的循环就是循环key,这个在字典里面就有讲解和说明
# 但是这里有一个奇怪的现象 就是set里面,可以写入集合
print a
# set(['abc', 'zhanshan', 'yaoming'])
# set(['abc', 'zhanshan', 'yaoming'])
 
 
a = set("abcd1234")
print a
b = {'a', 'c', 'b', 'd', '1', '3', '2', '4'}
print b
print a==b

# set(['a', 'c', 'b', 'd', '1', '3', '2', '4'])
# set(['a', 'c', 'b', 'd', '1', '3', '2', '4'])
# True

def add(self, *args, **kwargs): # real signature unknown
"""
Add an element to a set.

This has no effect if the element is already present.
"""
pass


1、给集合添加元素
a = set(("abc","zhanshan","yaoming"))
# 这里的set 中的参数只能是一个,
# 且这一个参数一定要是可以迭代的对象,
# 也就是要是能进行for循环的
# 可以是 str list 元组 字典中默认就是添加key为集合中的元素
# 因为字典默认的循环就是循环key,这个在字典里面就有讲解和说明
print a
a.add("kebi")
print a



def clear(self, *args, **kwargs): # real signature unknown
""" Remove all elements from this set. """
pass

2、清空集合中的元素
将集合中的元素清空

set([])



def copy(self, *args, **kwargs): # real signature unknown
""" Return a shallow copy of a set. """
pass

3、复制集合
将a变量对应的原集合 复制 给另外的变量b


def difference(self, *args, **kwargs): # real signature unknown
"""
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

4、求两个集合的差 set1-set2 返回 就是在set1 不在 set2的集合
set1=set(['abc', 'kebi', 'zhanshan', 'yaoming'])
set2={"abc","zhanshan","liuxiang"}
print set2
print set1
set3=set1.difference(set2)
print set3
set4=set1-set2
print set4

# set(['abc', 'zhanshan', 'liuxiang'])
# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['yaoming', 'kebi'])
# set(['yaoming', 'kebi'])



def difference_update(self, *args, **kwargs): # real signature unknown
""" Remove all elements of another set from this set. """
pass

5、求两个集合的差,并更新 相当于 set1=set1-set2

但是写法是
set1=set(['abc', 'kebi', 'zhanshan', 'yaoming'])
set2={"abc","zhanshan","liuxiang"}
print set1
print set2
set3=set1.difference_update(set2)
print set3 #返回set3=None
print set1 #set1自动修改为set1-set2
print set2 #set2 不变

# None
# set(['yaoming', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang'])


def discard(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set if it is a member.

If the element is not a member, do nothing.
"""
pass
6、删除指定的元素 返回是None

set1=set(['abc', 'kebi', 'zhanshan', 'yaoming'])
set2={"abc","zhanshan","liuxiang"}
print set1
print set2
set3=set1.discard("abc")
set4=set2.discard("liuxiang")
print set1
print set2
print set3
print set4


# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang'])
# set(['yaoming', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan'])
# None
# None


def intersection(self, *args, **kwargs): # real signature unknown
"""
Return the intersection of two or more sets as a new set.

(i.e. elements that are common to all of the sets.)
"""
pass


7、交集 计算 不改变原来集合的值,返回交集的集合
set1=set(['abc', 'kebi', 'zhanshan', 'yaoming'])
set2={"abc","zhanshan","liuxiang"}
print set1
print set2
set3=set1.intersection(set2)

print set1
print set2
print set3

# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang'])
# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang'])
# set(['abc', 'zhanshan'])


def intersection_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the intersection of itself and another. """
pass

8、交集,然后修改被交集的集合,让它等于交集 返回结果是 None

set1=set(['abc', 'kebi', 'zhanshan', 'yaoming'])
set2={"abc","zhanshan","liuxiang"}
print set1
print set2
set3=set1.intersection_update(set2)

print set1
print set2
print set3


# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang'])
# set(['abc', 'zhanshan'])   set1 被修改为交集了
# set(['abc', 'zhanshan', 'liuxiang']) set2 不变
# None 返回值 set3


def isdisjoint(self, *args, **kwargs): # real signature unknown
""" Return True if two sets have a null intersection. """
pass
9、判断交集是否为空 ,为空就是True  有交集为False

set1=set(['abc', 'kebi', 'zhanshan', 'yaoming'])
set2={"abc","zhanshan","liuxiang"}
print set1
print set2
set3=set1.isdisjoint(set2)

print set1
print set2
print set3

# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang'])
# set(['yaoming', 'abc', 'zhanshan', 'kebi'])
# set(['abc', 'zhanshan', 'liuxiang']) 不修改原来集合的值
# False 有交集 返回False


def issubset(self, *args, **kwargs): # real signature unknown
""" Report whether another set contains this set. """
pass

10、判断集合 y 能否包含 x 集合 y 是 issubset 的参数 ,判断 x是y的子集?
x = {"a", "b", "c"}
y = {"f", "e", "d", "c", "b", "a"}
z = x.issubset(y)
print(z)



def issuperset(self, *args, **kwargs): # real signature unknown
""" Report whether this set contains another set. """
pass
11、判断指定集合是否是被称作集合的子集(10相反)
x = {"f", "e", "d", "c", "b"}
y = {"a", "b", "c"}
z = x.issuperset(y)
print(z)


def pop(self, *args, **kwargs): # real signature unknown
"""
Remove and return an arbitrary set element.
Raises KeyError if the set is empty.
"""
pass
12、删除一个元素 随机删除(其实是删除当前集合中最后一个元素),删除后返回该元素


def remove(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set; it must be a member.

If the element is not a member, raise a KeyError.
"""
pass
13、指定移除一个元素 返回None,没有就报错


def symmetric_difference(self, *args, **kwargs): # real signature unknown
"""
Return the symmetric difference of two sets as a new set.

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

14、返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。
set1 union set2 - set1 intersection set2
就是并集 减去 交集


def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the symmetric difference of itself and another. """
pass

15、移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
set1=set1 union set2 - set1 intersection set2 
set1=就是并集 减去 交集


def union(self, *args, **kwargs): # real signature unknown
"""
Return the union of sets as a new set.

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

pass
16、并 集 去重
包含了所有集合的元素,重复的元素只会出现一次。

def update(self, *args, **kwargs): # real signature unknown
""" Update a set with the union of itself and others. """
pass

17、可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

py3里面的 set 方法:

set.add(                          set.issubset(
set.clear(                        set.issuperset(
set.copy(                         set.mro(
set.difference(                   set.pop(
set.difference_update(            set.remove(
set.discard(                      set.symmetric_difference(
set.intersection(                 set.symmetric_difference_update(
set.intersection_update(          set.union(
set.isdisjoint(                   set.update(


posted @ 2016-03-12 10:39  科学小怪癖  阅读(120)  评论(0)    收藏  举报