Python语言提供了集合类型set,set里存储的元素无序而不重复,这是它区别于list和tuple的地方。
有两种创建方式:{a, b, c}和set()函数。
注意: 空集合set只能通过set()函数来创建,不能通过{}来创建,因为Python把{}当成空字典dictionary了。
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # 练习set
-
-
- def create_set():
- s = set()
- print(s)
-
- s1 = {'aaa', 'bbb', 'cccc', 'cccc'}
- print(s1)
-
- s2 = set('abcabc')
- print(s2)
-
-
- def main():
- create_set()
-
-
- if __name__ == '__main__':
- main()
执行结果:
set()
{'cccc', 'aaa', 'bbb'}
{'c', 'b', 'a'}
再执行一次:
set()
{'bbb', 'cccc', 'aaa'}
{'a', 'b', 'c'}
从两次打印结果来看,我们很容易就看到了元素的无序性和不重复性。
直接写一段测试代码看它有哪些操作。
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- # 练习set
-
-
- def create_set():
- s = set()
- print(s)
-
- s1 = {'aaa', 'bbb', 'cccc', 'cccc'}
- print(s1)
-
- s2 = set('abcabc')
- print(s2)
-
- s3 = {x for x in 'abcqwe' if x not in 'abc'}
- print(s3)
-
-
- def operate_set():
- s1 = set('abcdefgabc')
- print('s1:', s1)
- print('s1 length: ', len(s1)) # 求长度
-
- if 'a' in s1:
- print('a is in ', s1)
- if 'x' not in s1:
- print('x is not in ', s1)
-
- s2 = set('abcxyz')
- print(s2)
- print(s1 - s2) # 在s1内,但不在s2内
- print(s1 | s2) # s1和s2合集
- print(s1 & s2) # s1和s2交集
- print(s1 ^ s2) # 不在两者里都出现的
-
- s3 = {1, 2, 3, 4, 5}
- s3.add(6) # 添加一个元素
- print('s3:', s3)
- s3.remove(2) # 删除指定的元素, 如果不存在会抛出异常
- print('s3:', s3)
- s3.discard(9) # 删除指定的元素, 如果不存在不会抛出异常
- print('s3:', s3)
- s3.pop() # 随机删除一个元素并返回这个元素值
- print('s3:', s3)
- s3.clear() # 清空整个set
- print('s3:', s3)
-
-
- def main():
- create_set()
- print('-------------------------------------------------')
- operate_set()
-
-
- if __name__ == '__main__':
- main()
集合set没有列表list和字典dictionary使用的频繁,它适合使用在集合里元素不重复的情况下,每个数据结构有它最合适的使用场景,这促使我们在实际编程过程中根据实际问题来寻找恰当的数据结构。