Python-集合_第1张图片


删除列表中重复的元素:l = [a,b,c,a]

    - 强制转化列表为集合类型:list(set(l))
    - 将列表转化为字典,拿出里面的所有key值: dict.fromkeys(l).keys()


Python-集合_第2张图片


实现switch的两种方法:
    - if...elif...else...
    - 通过字典实现: d= {"key",func}     
        if oper in d.keys():
            d[oper]()
        else:
            print "error"


集合

一.集合的定义

 不可变的数据类型一定可哈希;hash()内置函数可以判断某个类型是否可哈希;


集合是无序的,不重复的数据组合

集合里不能定义列表

Python-集合_第3张图片
二.集合的关系测试


s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {1, 2}
s4 = {5}

print "s1,s2,s3的交集:", s1.intersection(s2, s3)
print "s1,s2,s3的交集:", s1 & s2 & s3
print "s1,s2,s3的并集:", s1.union(s2, s3)
print "s1,s2,s3的并集:", s1 | s2 | s3
print "s1-s2的差集:", s1.difference(s2)
print "s1-s2的差集:", s1 - s2
print "s1-s2-s3的差集:", s1.difference(s2, s3)
print "s1-s2-s3的差集:", s1 - s2 - s3
print "s2-s1的差集:", s2.difference(s1)
print "s1和s2的对等差分:", s1.symmetric_difference(s2)
print "s1和s2的对等差分:", s1 ^ s2
print "s2和s1的对等差分:", s2.symmetric_difference(s1)

# s.isdisjoint(s2)  如果有交集,返回False;否则,返回True;
print "s1和s4是否没有交集:", s1.isdisjoint(s4)

print "s3是否为s1的子集:", s3.issubset(s1)

print "s1是否为s3的父集:", s1.issuperset(s3)

Python-集合_第4张图片

Python-集合_第5张图片


三.集合的增删改查:

1.增加:

s.add(4), 增加一个元素

Python-集合_第6张图片


s.update(s1)

Python-集合_第7张图片

Python-集合_第8张图片


2.删除:
s.remove(1),        删除存在的元素,如果不存在,直接报错;

Python-集合_第9张图片


s.discard(1)         删除存在的元素,如果不存在,do nothing;


 s.pop(),                随即删除集合元素,不加任何参数;

Python-集合_第10张图片


3.复制:

s1 = s.copy()       s和s1的id不同

Python-集合_第11张图片


4.清空: s.clear()
Python-集合_第12张图片
5.冻集(frozenset)
- 冻住的集合,不能增删改;
- frozenset(set)
- set(frozenset)

Python-集合_第13张图片


6.其他

显示集合的长度


检测某元素是否为集合s的成员,返回布尔值

Python-集合_第14张图片