python set和frozenset 异同点学习记录

    今天接触到set和frozenset的同时使用,之前对于二者的了解仅仅是停留在set是可变集合,frozenset是不可变集合,其他的也就没有再记住什么了,今天找时间简单地来总结一下它们的异同点,也方便以后的学习和使用,下面是具体的实践,具体的区别讲解都在注释中,就不再多解释了:

#!usr/bin/env python
#encoding:utf-8
from __future__ import division


'''
__Author__:沂水寒城
功能:python set和frozenset 异同点学习记录
'''


'''
相同点:
都是集合
都拥有集合对象共有的操作,如union、intersection、difference和sysmmetric difference

不同点:
set是可变集合,frozenset是不可变集合
set中的元素可以修改,frozenset中的元素一旦创建完成奖就不能再进行增删操作
set无hash值不可做字典中的键,因为它元素可变,frozenset有hash值,元素不可变古可用作字典中的键
'''


#工厂方法初始化创建两个集合
set_=set('hangzhou')
print 'set_: ',set_
print 'type set_: ',type(set_)
frozenset_=frozenset('hangzhou')
print 'frozenset_: ',frozenset_
print 'type frozenset_: ',type(frozenset_)


#向集合中增加元素
try:
    tmp_list=['A','B','C','D']
    for one_item in tmp_list:
        set_.add(one_item)
    print 'set_: ',set_
    print 'type set_: ',type(set_)

    for one_item in tmp_list:
        frozenset_.add(one_item)
    print 'frozenset_: ',frozenset_
    print 'type frozenset_: ',type(frozenset_)
except Exception,e:
    print 'Add Exception: ',e


#从集合中移除指定元素
try:
    tmp_list=['B','D']
    for one_item in tmp_list:
        set_.remove(one_item)
    print 'set_: ',set_
    print 'type set_: ',type(set_)

    for one_item in tmp_list:
        frozenset_.remove(one_item)
    print 'frozenset_: ',frozenset_
    print 'type frozenset_: ',type(frozenset_)
except Exception,e:
    print 'Remove Exception: ',e


#并交差集合计算
print 'union: ',set_|frozenset_
print 'intersection: ',set_&frozenset_
print 'difference: ',set_-frozenset_
print 'sysmmetric difference: ',set_^frozenset_

结果如下:

set_:  set(['a', 'g', 'h', 'o', 'n', 'u', 'z'])
type set_:  <type 'set'>
frozenset_:  frozenset(['a', 'g', 'h', 'o', 'n', 'u', 'z'])
type frozenset_:  <type 'frozenset'>
set_:  set(['a', 'A', 'C', 'B', 'D', 'g', 'h', 'o', 'n', 'u', 'z'])
type set_:  <type 'set'>
Add Exception:  'frozenset' object has no attribute 'add'
set_:  set(['a', 'A', 'C', 'g', 'h', 'o', 'n', 'u', 'z'])
type set_:  <type 'set'>
Remove Exception:  'frozenset' object has no attribute 'remove'
union:  set(['a', 'A', 'C', 'g', 'h', 'o', 'n', 'u', 'z'])
intersection:  set(['a', 'g', 'h', 'o', 'n', 'u', 'z'])
difference:  set(['A', 'C'])
sysmmetric difference:  set(['A', 'C'])

    今天就简单学习到这里了,感觉很多细节的知识还是必须要去花点实践学习和掌握的。

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/83618078