一、集合的特点
集合和列表非常相似,都是直接向对象中存储数据,不同点在于:
1.集合中只能存储不可变对象。例如字符串、数字、元组、none、TRUE、FALSE 都是可以存储的,但无法存储字典、列表。
2. 集合中存储的对象是无序的。这里的无序是相对于列表来说的。在列表中数据按照元素的插入顺序保存,存储的第n个数据会被放在索引为(n-1)的位置,而集合的无序指的是不按照元素的插入顺序保存,并不是真的完全无序。由于存储顺序与插入顺序无关,故无法根据索引查找数据。
3. 集合中不能出现重复的元素。即集合中的元素都是唯一的。
二、 创建集合
创建集合有两种方法:使用{ }来创建集合、使用函数set( )函数创建集合。
1、使用{}来创建集合
# 使用{}来创建集合s={1,2,3,4,5} print(s,type(s))
这样似乎输入顺序和存储顺序一样,我们来试试另一组数据
s={10,6,3,1,7} print(s,type(s))
得到的结果是:{1, 3, 6, 7, 10} ,这也说明了集合的一大特点:集合中存储的对象是无序的。
当输入重复元素时,集合只会保存一个元素。
s={10,6,3,4,5,3,3,6,6,7,7,1,7} print(s,type(s))
得到的结果是:{1, 3, 4, 5, 6, 7, 10}
集合中无法保存可变对象,如列表、字典等。例如:
s={[1,2,3,4],[5,6,7]} print(s,type(s))
则会报错:TypeError: unhashable type: 'list'
2.使用set()来创建集合
s=set() # 空集合
可以通过 set( ) 将序列和字典转换成集合。例子:
s=set([1,2,3,4,5,3,2,1,1]) # 空集合print(s,type(s)) s=set('hello') #使用set( )将序列转换成集合print(s,type(s))
得到的结果是:
{1, 2, 3, 4, 5} 和 {'h', 'e', 'l', 'o'}
还可以使用 in 和 not in 来检查集合中的元素
s={'a','b',1,2,3,4,1} print('a'ins)
得到结论是True
使用 len( ) 获取集合中元素的数量
s={'a','b',1,2,3,4,1} print(len(s))
得到是6个元素
三、 向集合中添加元素
可以使用 add( )向集合中添加元素,add( ) 是 没有返回值的。
s={'a','b',1,2,3,4,1} s.add(8) print(s)
结果就是:{1, 2, 3, 4, 'b', 8, 'a'}
update 将一个集合的元素添加到当前集合中。添加序列、字典也是可以的,需要注意的是,添加字典只会使用键。
s={'a','b',1,2,3,4,1} s2=set('hello') s.update(s2) print(s)
结果就是:{1, 2, 3, 4, 'h', 'e', 'a', 'o', 'l', 'b'}
四、 从集合中删除元素
pop( ) 随机删除并返回集合中的一个元素。调用方法为 s.pop( )。
咱们调用一下s.pop()
s={'a','b',1,2,3,4,1} s2=set('hello') s.update(s2) s.pop() print(s)
得到的结果是:{2, 3, 4, 'l', 'h', 'a', 'e', 'o', 'b'}
再调用一下,得到的结果是:{3, 4, 'o', 'h', 'b', 'e', 'l', 'a'}
如果想知道删除的是哪一个元素,可以使用 result。
s={'a','b',1,2,3,4,1} s2=set('hello') s.update(s2) result=s.pop() print(result) print(s)
说明是1被删了
remove( )
删除集合中的指定元素。
s={'a','b',1,2,3,4,1} s2=set('hello') s.update(s2) # 把s2添加到s集合中s.remove('e') print(s)
得到的结果是:{1, 2, 3, 4, 'l', 'o', 'h', 'a', 'b'}
clear( )
清空集合。
s={'a','b',1,2,3,4,1} s2=set('hello') s.update(s2) s.clear() print(s)
得到一个空集合:set()