您的位置:首页 > 理论基础 > 数据结构算法

python入门-数据结构-集合

2019-02-18 16:19 417 查看

集合

Set,感觉是List的一个子类,类似于枚举类型,本来想草草几笔带过,感觉意义不大,但是想一想胖弟弟,要坚持,每一篇都要认真全面的分析和编写,所以就开始吧,还是按照之前的结构一起学习一下这个数据结构,集合。

初始化

L=['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN','MON']
weekdays=set(L)
#weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
print L
print weekdays

初始化有两种方式,如第1、2行是首先申明一个List L,再调用Set(L)来申明一个集合,也可以直接用第3行代码直接申明,看个人习惯,我偏向于分开写。注意L中第一个成员和最后一个成员都是‘MON’,第5行print L 和第6行print weekdays打印出来我们会发现,打印weekdays的时候只会出现一次‘MON’,而打印L则是全部都有,这就说明set集合会自动去除值相同的成员,也就更符合枚举的特征了。

调用add(value)功能实现:
weekdays.add(‘EIGHT’)
如果EIGHT存在,则代码编译执行也不会报错。
还有一种方法update(value or list or tuple or dict)
weekdays.update((‘A’,‘B’))这个相当于在集合weekdays中添加了一个tuple(元组),打印出来会多了两个成员:A、B

调用remove(value)功能实现
weekdays.remove(‘MON’)
如果remove里面的value不存在于集合weekdays中则会报错,所以在执行删除操作之前应该首先判断该成员是否存在,如果存在,再执行删除操作,这样是不是很麻烦,所以查了一下还有一个功能实现了删除操作:
dicard(value)
weekdays.dicard(‘MON’),如果’MON’不存在,也不会报错,如果存在,则删除,所以我只会用discard() 去做删除,而不会用remove()

既然是类似枚举了,当然就不存在修改成员的操作,这里的改就可以理解为增加或删除成员。

枚举枚举,类似枚举,所以查询都是查询这个集合,不存在查询集合中的某一个的操作,只有查询某一个value是否存在于该集合中:
if (‘WED’ in weekdays)==True:
print ‘OK’

延伸

a=set('adcde')
b=set('nicholas')
print a - b
print a ^ b
print a | b
print a & b

注意此处都是逻辑运算。
第3行:获得集合a中出现并且集合b中没有的成员(a减a并b)
第4行:获得集合a和集合b中不同时出现的成员(a并b减去a交b)
第5行:获得集合a和集合b中所有出现的不用成员(取并集)
第6行:获得集合a和集合b中共同存在的成员(取交集)
由此看来该数据结构在数学计算或者说是逻辑运算的时候会派上很大用场啊。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: