set的使用:set就像是把dict中的key抽出来一样,类似于一个list,但是内容又不能重复
简而言之:集合就是无序的不重复元素序列
从形式上看,和字典类似,python集合会将所有元素放在一堆大括号{}中,相邻元素之间用逗号,隔开
{element1,element2,…,elementn}
其中elementn表示集合中的元素,数量没有限制
从内容上看,同一集合中只能存储不可变的数据类型,包括整型、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则python解释器会出现TypeError错误
创建
1.使用{}创建
setname={element1,element2,…,elementn}
a={1,'c',(1,2,3),3.24}
print(a)
>>>
{1, 3.24, 'c', (1, 2, 3)}
2.set函数创建
set()函数作为python的内置函数,其功能是将字符串、列表、元组、range对象等可迭代对象转化成集合
该函数的语法格式如下:setname=set(iteration)
其中iteration就表示字符串、列表、元组、range对象等数据
注意:创建一个空集合必须使用set(),而不是{},因为{}是用来创建一个空字典的
set1=set("baidu.com")
print(set1)
>>>
{'b', 'm', 'd', 'i', '.', 'o', 'u', 'c', 'a'}
set1=set([1,2,3,4])
print(set1)
>>>
{1, 2, 3, 4}
set1=set((1,2,3,4))
print(set1)
>>>
{1, 2, 3, 4}
set1=set(range(5))
print(set1)
>>>
{0, 1, 2, 3, 4}
set是无序的,也不能包含重复的元素,访问一个set的意义就仅仅在于查看某个元素是否在这个集合里面
a={1,'c',(1,2,3),3.24}
print('x' in a)
>>>
False
a={1,'c',(1,2,3),3.24}
print('c' in a)
>>>
True
也通过for来遍历
s=set([('adam',95),('lisa',80),('bob',70)])
for x in s:
print(x[0],":",x[1])
>>>
lisa : 80
bob : 70
adam : 95
增加
s=set([1,2,3])
s.add(4)
print(s)
>>>
{1, 2, 3, 4}
s=set([1,2,3])
s.add(3)
print(s)
>>>
{1, 2, 3}
s=set([1,2,3])
s2=set([11,22,33])
s.update(s2)
print(s)
>>>
{1, 2, 3, 33, 22, 11}
删除
s=set([1,2,3])
s.remove(1)
print(s)
>>>
{2, 3}
s=set([1,2,3])
s.remove(4)
print(s)
>>>
Traceback (most recent call last):
File "D:\pythonProject\demo3.py", line 174, in <module>
s.remove(4)
KeyError: 4
修改
s=set([1,2,3])
s[0]=111
>>>
Traceback (most recent call last):
File "D:\pythonProject\demo3.py", line 174, in <module>
s[0]=111
TypeError: 'set' object does not support item assignment
s=set([1,2,3])
print(s)
s.remove(1)
s.add(111)
print(s)
>>>
{1, 2, 3}
{2, 3, 111}
查找
s=set([1,2,3])
x=1
if x in s:
print(x,"在集合中")
else:
print(x,"不在集合中")
>>>
1 在集合中
s=set([1,2,3])
x=1111
if x in s:
print(x,"在集合中")
else:
print(x,"不在集合中")
>>>
1111 不在集合中
集合的遍历
s=set([1,2,3])
for x in s:
print(x)
>>>
1
2
3
集合的交并差运算
set1=set("abcd")
set2=set("def")
print(set1)
print(set2)
set3=set1 & set2
print(set3)
set4=set1 | set2
print(set4)
set5=set1 - set2
print(set5)
set6=set2 - set1
print(set6)
>>>
{'a', 'b', 'c', 'd'}
{'f', 'd', 'e'}
{'d'}
{'a', 'e', 'f', 'b', 'c', 'd'}
{'a', 'b', 'c'}
{'f', 'e'}
练习题
1.生成了N个1-100之间的随机整数(N<=1000),N是用户输入的
对于指定其中重复的数字,只保留一个,把其中相同的数字去掉
import random
n=int(input("请随机输入一个数字:"))
print("生成的数字是:",n)
set1=set()
for x in range(n):
a=random.randint(1,100)
print(a)
set1.add(a)
print(set1)
>>>
请随机输入一个数字:10
生成的数字是: 10
44
44
69
77
49
83
52
82
21
82
{69, 44, 77, 49, 82, 83, 52, 21}
2.怎么使用集合完成列表的去重操作,并将最终的列表由大到小排序输出
list1=["abc",1,2.12,1,18,2]
print(list1)
s=set(list1)
print(s)
list2=list(s)
print(list2)
>>>
['abc', 1, 2.12, 1, 18, 2]
{1, 2.12, 2, 'abc', 18}
[1, 2.12, 2, 'abc', 18]
|