set()函数创建一个无序不重复元素集,可以删除重复数据,还可以计算交集、差集、并集等
set可以看成数学意义上的无序和无重复元素的集合
语法
set([iterable])
参数
iterable:可迭代对象
返回值
返回新的集合对象
实例
x = set('eleven')
y = set('twelve')
# 删除重复值(返回的集合对象是无序的)
# {'e', 'n', 'v', 'l'} {'e', 'v', 'l', 'w', 't'}
print(x,y)
# 交集 & : x&y,返回一个新的集合,包括同时在集合 x 和 y 中的共同元素
# {'e', 'v', 'l'}
print(x & y)
# 并集 | : x|y,返回一个新的集合,包括集合 x 和 y 中所有元素
# {'e', 'n', 'v', 'l', 'w', 't'}
print(x | y)
#差集 - : x-y,返回一个新的集合,包括在集合 x 中但不在集合 y 中的元素
# {'n'}
print(x - y)
#补集 ^ : x^y,返回一个新的集合,包括集合 x 和 y 的非共同元素
# {'w', 'n', 't'}
print(x ^ y)
扩展
通过add(key)
方法可以添加元素到set中,可以重复添加,但不会有效果,remove(key)
方法可以删除元素
new_set = set([1,2,3])
print(new_set) # {1, 2, 3}
new_set.add(4)
print(new_set) # {1, 2, 3, 4}
new_set.add(4)
print(new_set) # {1, 2, 3, 4}
new_set.remove(1)
print(new_set) # {2, 3, 4}
set()与sorted()方法结合,不改变原来的数据顺序
# 字符串
number = 'eleven'
set_number = set('eleven')
res1 = ''.join(set_number)
res2 = ''.join(sorted(set_number,key = number.index))
# res1输出结果无顺序
print(res1) # evln
# 按照number字符串下标进行排序
print(res2) # elvn
# 数组列表
city = ['上海', "广州", "上海", "成都", "上海", "上海", "北京", "上海", "广州", "北京", "上海"]
# 改变原来顺序
print(list(set(city))) # ['上海', '北京', '广州', '成都']
# 改变原来数据的顺序
city_set = set(city)
new_city = sorted(city_set, key=city.index)
print(new_city) # ['上海', '广州', '成都', '北京']