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使用的频繁,它适合使用在集合里元素不重复的情况下,每个数据结构有它最合适的使用场景,这促使我们在实际编程过程中根据实际问题来寻找恰当的数据结构。