Python 学习入门(9)—— set操作

来源:互联网 发布:淘宝如何搜索小口栓 编辑:程序博客网 时间:2024/05/20 04:13

python 的set和其他语言类似,是一个无序、不重复元素集,基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合),intersection(交),difference(差),sysmmetric_difference(对称差集)等数学运算.

sets 支持 x in set,len(set),for x in set,作为一个无序的集合,sets不记录元素位置或者插入点。因此sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。

[python] view plaincopyprint?
  1. #!/usr/bin/env python  
  2.   
  3. # it-homer in 2013  
  4.   
  5. import sys  
  6.   
  7. reload(sys)  
  8. sys.setdefaultencoding('utf-8')  
  9.   
  10. def test_set():  
  11.   x = set('ithomer')  
  12.   y = set(['i''t''h''s''n'])  
  13.   print("%s, %s" % (x, y))      # set(['e', 'i', 'h', 'm', 'o', 'r', 't']), set(['i', 'h', 's', 't', 'n'])  
  14.   
  15.   # 交集  
  16.   print("%s" % (x&y))           # set(['i', 'h', 't'])  
  17.   f = x.intersection(y)  
  18.   print(f)                      # set(['i', 'h', 't'])  
  19.   
  20.   # 并集  
  21.   print("%s" % (x|y))           # set(['e', 'i', 'h', 'm', 'o', 'n', 's', 'r', 't'])  
  22.   f = x.union(y)  
  23.   print(f)                      # set(['e', 'i', 'h', 'm', 'o', 'n', 's', 'r', 't'])  
  24.   
  25.   # 差集  
  26.   print("%s" % (x-y))           # set(['m', 'r', 'e', 'o'])  
  27.   f = x.difference(y)  
  28.   print(f)                      # set(['m', 'r', 'e', 'o'])  
  29.   
  30.   print("%s" % (y-x))           # set(['s', 'n'])  
  31.   f = y.difference(x)  
  32.   print(f)                      # set(['s', 'n'])  
  33.   
  34.   # 对称差集(项在x或y中,但不会同时出现在二者中)   
  35.   print("%s" %(x^y))            # set(['e', 'm', 'o', 'n', 's', 'r'])  
  36.   print("%s" %(y^x))            # set(['s', 'r', 'e', 'm', 'o', 'n'])  
  37.   
  38.   f = x.symmetric_difference(y) # set(['e', 'm', 'o', 'n', 's', 'r'])  
  39.   print(f)  
  40.   f = y.symmetric_difference(x) # set(['s', 'r', 'e', 'm', 'o', 'n'])  
  41.   print(f)  
  42.   
  43.   
  44.   a = [11223344113322]  
  45.   b = set(a)  
  46.   print(b)              # set([33, 11, 44, 22])  
  47.   
  48.   for i in b:  
  49.     print i,            # 不换行输出 : 33 11 44 22  
  50.   
  51.   
  52.   
  53. def test_set2():  
  54.   s = set([13579])  
  55.   t = set("ithomer")  
  56.     
  57.   print(t)              # set(['e', 'i', 'h', 'm', 'o', 'r', 't'])  
  58.   
  59.   # 并集    
  60.   print("%s" % (s|t))   # set([1, 3, 'e', 5, 7, 'i', 9, 'm', 'o', 'r', 't', 'h'])  
  61.   
  62.   # 交集  
  63.   print("%s" % (t&s))   # set([])  
  64.   
  65.   # 差集  
  66.   print("%s" % (t-s))   # set(['e', 'i', 'h', 'm', 'o', 'r', 't'])  
  67.   print("%s" % (s-t))   # set([7, 1, 3, 5, 9])  
  68.   
  69.   # 对称差集  
  70.   print("%s" % (t^s))   # set([1, 3, 'e', 5, 7, 'i', 9, 'm', 'o', 'r', 't', 'h'])  
  71.   
  72.   
  73.   print(t)              # set(['e', 'i', 'h', 'm', 'o', 'r', 't'])  
  74.   t.add('y')  
  75.   t.add('g')  
  76.   print(t)              # set(['e', 'g', 'i', 'h', 'm', 'o', 'r', 't', 'y'])  
  77.   
  78.   
  79.   try:  
  80.     print(len(t))       # 9  
  81.     t.remove('Y')  
  82.   except Exception, e:  
  83.     print e             # 'Y'  
  84.   
  85.   print(len(t))         # 9  
  86.   t.remove('y')  
  87.   print(len(t))         # 8  
  88.   
  89.   
  90.   
  91. def test_set3():  
  92.   s = set('ithomer')  
  93.   t = set('home')  
  94.   
  95.   # 测试 x 是否是 s 的成员  
  96.   f = 'i' in s  
  97.   print(f)              # True  
  98.   
  99.   # 测试 x 是否不是 s 的成员  
  100.   f = 'i' not in s  
  101.   print(f)              # False  
  102.   
  103.   # 测试是否 t 中的每一个元素都在 s 中   
  104.   f = t.issubset(s)  
  105.   print(f)              # True  
  106.   
  107.   # 测试是否 t 中的每一个元素都在 s 中  
  108.   f = s.issuperset(t)  
  109.   print(f)              # True  
  110.   
  111.   # 浅复制    
  112.   print(s)              # set(['e', 'i', 'h', 'm', 'o', 'r', 't'])  
  113.   f = s.copy()  
  114.   print(f)              # set(['r', 'e', 't', 'i', 'h', 'm', 'o'])  
  115.     
  116.   f = hash('i')  
  117.   print(f)  
  118.   
  119.   
  120. def test_set4():  
  121.   s = set('ithomer')  
  122.   t = set('home123')  
  123.   
  124.   # s |= t  
  125.   s.update(t)         
  126.   print(s)              # set(['e', 'i', 'h', 'm', 'o', '1', '3', 'r', 't', '2'])  
  127.   
  128.   
  129.   s = set('ithomer')  
  130.   # s &= t  
  131.   s.intersection_update(t)  
  132.   print(s)              # set(['h', 'e', 'm', 'o'])  
  133.   
  134.     
  135.   s = set('ithomer')  
  136.   # s -= t  
  137.   s.difference_update(t)  
  138.   print(s)              # set(['i', 'r', 't'])  
  139.   
  140.   
  141.   s = set('ithomer')  
  142.   # s ^= t  
  143.   s.symmetric_difference_update(t)  
  144.   print(s)              # set(['i', '1', '3', 'r', 't', '2'])  
  145.   
  146.   
  147.   s = set('ithomer')  
  148.   print(s)              # set(['e', 'i', 'h', 'm', 'o', 'r', 't'])  
  149.   s.add('I')  
  150.   print(s)              # set(['e', 'i', 'h', 'm', 'o', 'I', 'r', 't'])  
  151.   s.remove('i')            
  152.   print(s)              # set(['e', 'h', 'm', 'o', 'I', 'r', 't'])  
  153.   s.discard('I')  
  154.   print(s)              # set(['e', 'h', 'm', 'o', 'r', 't'])  
  155.   s.pop()  
  156.   print(s)              # set(['h', 'm', 'o', 'r', 't'])  
  157.   s.clear()  
  158.   print(s)              # set([])  
  159.   
  160.   
  161.   
  162. if __name__ == "__main__":  
  163. #  test_set()  
  164. #  test_set2()  
  165.   test_set3()  
  166. #  test_set4() 
0 0
原创粉丝点击