本文共 2441 字,大约阅读时间需要 8 分钟。
集合set 无序不重复的元素
意味着不能用下标访问
s1 = set() #创建空集合只能使用set()s2={}print(type(s1))print(type(s2))s2={1,3,7} #字典:{key:value,key:value,...} 集合{元素1,元素2,...}print(type(s2))''''''
作用:利用其不重复特点,将一个列表快速去重
list1 = [3,5,8,9,1,8,4,2,5,8,9]s1 = set(list1)print(s1)'''{1, 2, 3, 4, 5, 8, 9}'''
s={10,2,31,4,5}for index,i in enumerate(s): #enumerate()下标和元素配对存放 print(index,i)'''0 21 42 53 104 31'''
增删改查
增加
add() 添加一个元素
update() 添加新元素进入集合,不重复添加
s1 = set()s1.add('royal')s1.add('never')s1.add('give')s1.add('up')print(s1)#不是顺序添加t1=('把','书','读','下','去')s1.update(t1)print(s1)#也是无序的s1.add(t1)#可以放元组,不能放列表和字典print(s1)'''{'up', 'give', 'never', 'royal'}{'give', '去', '读', 'up', '书', 'royal', '下', '把', 'never'}{'去', ('把', '书', '读', '下', '去'), '读', '书', 'up', '下', 'give', '把', 'royal', 'never'}'''
删除
set.remove() 元素存在则删除,没有报异常
set.pop() 随机删除,一般删除第一个元素
set.clear() 清空所有元素
set.discard() 类似remove(),在移除不存在元素时不会报错
s1 = set()s1.add('royal')s1.add('never')s1.add('give')s1.add('up')s1.remove('royal')print(s1)#s1.remove('give up') KeyError: 'give up's1.pop()print(s1)s1.pop()print(s1)'''{'up', 'give', 'never'}{'give', 'never'}{'never'}set()'''
练习:
1.产生10个1~20的随机数,去除里面的重复项
2.键盘输入一个元素,将此元素从不重复的集合中删除import randomlist1=[]for i in range(10): ran=random.randint(1,20) list1.append(ran)set1=set(list1)print(list1)print(set1)num = int(input('请输入一个数字'))set1.discard(num)print('删除之后的结果:',set1)#法2set1=set()for i in range(10): ran = random.randint(1,20) set1.add(ran)print(set1)
符号操作
in not in 判断元素是否在集合中
import randomset1 = set()for i in range(10): ran = random.randint(1,20) set1.add(ran)print(set1)print(6 in set1)'''{1, 4, 5, 8, 10, 15, 16, 17}False'''
== 比较集合内容是否相等,相等返回True
set1={2,3,4,6,7}set2={2,3,4,5}print(set1==set2)print(set1!=set2)'''FalseTrue'''
运算符 + * - & |
set不支持+ *
- 差集 difference()功能同-号
set.difference_upgrate() 取差集并赋值给set
set1={2,3,4,6,7}set2={2,3,4,5}set3=set1-set2print(set3)set4=set2-set1print(set4)set5 = set1.difference(set2)print(set5)'''{6, 7}{5}{6, 7}'''
& 交集 intersection()功能同&号
set1={2,3,4,6,7}set2={2,3,4,5}set3=set1&set2print(set3)set4=set1.intersection(set2)print(set4)'''{2, 3, 4}{2, 3, 4}'''
|并集 union()功能同|号
^对称差集 找出两个列表中不一样的元素 symmetric_difference()同^号
练习:
已知两个列表:l1=[5,1,2,9,0,3] l2=[7,2,5,7,9]
找出两个列表的不同元素
找出两个列表的共同元素
l1=[5,1,2,9,0,3]l2=[7,2,5,7,9]s1=set(l1)s2=set(l2)#对称差集result = (s1|s2)-(s1&s2)print(result)result=s1^s2print(result)print(s1&s2)'''{0, 1, 3, 7}{0, 1, 3, 7}{9, 2, 5}'''
转载地址:http://nzegn.baihongyu.com/