python集合的用法

集合

Python 还包含了一个数据类型 —— set (集合)。集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。集合用大括号表示。

集合的创建

1.set() 函数可以用来创建集合

 x = set('spam')
 y = set(['h','a','m'])
 x, y#用逗号隔开的变量属于元组
##(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))
s1=set([1,2,3,4])
 s1
#{1, 2, 3, 4}  
s3=set({'a':2,'b':3,'c':4})
 s3
#{'c', 'a', 'b'}

set集合类需要的参数必须是迭代器类型的,如:序列、字典等,然后转换成无序不重复的元素集。由于集合是不重复的,所以可以对字符串、列表、元组进行去重操作。

2.大括号也可以创建集合

想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典,我们在后面介绍的一种数据结构。

集合的操作

集合添加

集合的添加有两种方式,分别是add和update。但是它们在添加元素时是由区别的:

  • add()方法
    把要传入的元素作为一个整体添加到集合中,如:
s=set('one')
s
#{'e', 'o', 'n'}
s.add('two')
s
#{'e', 'two', 'o', 'n'}
  • update()方法
    是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的字符。可以一次添加多个值,如:
s=set('one')
 s
{'e', 'o', 'n'}
 s.update('two')
 s
{'e', 'n', 't', 'w', 'o'}

集合删除

集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法。如:

  • setVar.remove(element)
    setVar :为一个set类型的变量
    element :表示要查找并删除的元素
    函数作用:
    在集合setVar中查找element元素,如果存在则删除;如果没找到,则报错。
s=set('one')
 s
{'e', 'o', 'n'}
 s.remove('e')
 s
{'n', 'o'}
  • setVar.discard(element)
    setVar :为一个set类型的变量
    element :表示要查找并删除的元素
    函数作用:
    在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做
sList
set([1, 2, 3, 4, 5])
sList.discard(1)
sList
set([2, 3, 4, 5])
  • s.pop()
    s:为set类型的变量
    函数作用:
    删除并返回set类型的s中的一个不确定的元素,如果为空引发KeyError错误。
sList
set([2, 3, 4, 5])
sList.pop()
2
  • s.clear()
    s:set类型的变量
    函数作用:
    清空s集合中的所有元素
List
set([3, 4, 5])
sList.clear()
sList
set([])

集合的遍历

集合的遍历跟序列的遍历方法完全一样。

s=set('one')
s
{'e', 'o', 'n'}
for i in s:
    print(i)
e
o
n

另外一种遍历(变量idex表示集合中元素i的索引。)

 s=set('one')
 s
{'e', 'o', 'n'}
for idex,i in enumerate(s):
        print (idex,i)
0 e
1 o
2 n

集合函数的补充

函数	说明
len(s)	set 的长度
x in s	测试 x 是否是 s 的成员
x not in s	测试 x 是否不是 s 的成员
s.issubset(t)	测试是否 s 中的每一个元素都在 t 中
s.issuperset(t)	测试是否 t 中的每一个元素都在 s 中
s.union(t)	返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t)	返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t)	返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t)	返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy()	返回 set “s”的一个浅复制

想了解更多,可以看一下这几篇博客
链接1
链接2
链接3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章