在Python语言中内置的数据结构有:列表(list)、元组(tuple)、字典(dict)、集合(set), 这4种数据结构和基础数据类型(整数、浮点数等)统称为“内置类型”(Built-in Types)。集合(set)和字典(dict)类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。集合(set)是一个无序的不重复的序列。可以使用大括号 { } 或者 set() 函数创建集合。
#新建一个set集合 #{}形式 >>> set1 = {1,2,3} >>> set1 {1, 2, 3} #set()形式,注意使用set函数需要进行传参,而参数必须是迭代器类型的,比如序列、字典等,然后转换成无序不重复的元素集,虽然集合里面是列表,但是输出的是{1, 2, 3},列表相当于一个容器 #就好比家里存水,需要水缸,或者瓶,而不能直接在家里存水(个人理解,方便记忆,如果错误欢迎指正) >>> set1 = set([1,2,3]) >>> set1 {1, 2, 3} #如果不适用序列或者字典,虽然也能输出,但是会报typeerr错误, set expected at most 1 arguments, got 3 >>> set1 = set(1,2,3) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: set expected at most 1 arguments, got 3 >>> set1 {1, 2, 3} #创建无序的集合,输出会变成有序的1,2,3,但是虽然显示的是有序也不表示set是有序的。 >>> set1 = set([2,3,1]) >>> set1 {1, 2, 3} #如果创建空集合,则必须使用set(),而不能使用{},因为 { } 是用来创建一个空字典。 >>> set1=set() >>> set1 set() #使用{},就成了空字典dict了 >>> set1={} >>> set1 {} #创建重复的集合,会进行去重操作,只输出{1,2,3,5} >>> set1={1,2,2,3,3,5,1,5} >>> set1 {1, 2, 3, 5} #集合的添加有两种方式,分别是add(value)和update(value)。但是它们在添加元素时是由区别的 #使用add(value),是将参数作为一个整体添加进去 >>> set1={"hello"} >>> set1 {'hello'} >>> set1.add("world") >>> set1 {'hello', 'world'} #update()方法是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的字符。可以一次添加多个值 >>> set1={"hello"} >>> set1 {'hello'} >>> set1.update("world") >>> set1 {'hello', 'w', 'r', 'l', 'd', 'o'} #效果和传入一个world一样 >>> set1.update("world","world") >>> set1 {'hello', 'w', 'r', 'l', 'd', 'o'} #集合的删除也有三个方法;一个是remove(some),另一个是discard(some),还有pop() #remove(some),如果存在则删除;如果没找到,则报错。 >>> set1={"a","b","c"} >>> set1.remove("b") >>> set1 {'a', 'c'} #如果没有对应的元素,则报错。 >>> set1.remove("d") Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'd' #discard(some)如果存在则删除;如果没找到,则什么也不做。 >>> set1={"a","b","c"} >>> set1.discard("b") >>> set1 {'a', 'c'} #如果没有对应的元素,则什么也不做 >>> set1.discard("d") >>> set1 {'a', 'c'} #pop()方法能够返回被删除的元素从第一个元素删除 >>> set1={"a","b","c"} >>> set1.pop() 'a' >>> set1 {'b', 'c'} #如果集合为空,则会报KeyError错误:'pop from an empty set'。 >>> set1=set([]) >>> set1.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'pop from an empty set' #另外集合可以通过clear方法清空集合里面的元素 >>> set1={"a","b","c"} >>> set1.clear() >>> set1 set() # 两个集合间可以进行一些运算. >>> set1={"a","b","c"} >>> set2={"b","c","d","e"} #减,在set1中去除set2中也包含的元素 >>> s=set1-set2 >>> s {'a'} >>> set1={"a","b","c"} >>> set2={"b","c","d","e"} #与,返回两个都有的元素 >>> s=set1&set2 >>> s {'b', 'c'} >>> set1={"a","b","c"} >>> set2={"b","c","d","e"} #或 返回两个集合的所有元素重复的元素进行去重 >>> s=set1|set2 >>> s {'e', 'b', 'c', 'a', 'd'} >>> set1={"a","b","c"} >>> set2={"b","c","d","e"} #异或 不同时包含于set1和set2的元素,就是set2中有,set1中没有,和set1中有,set2中没有的元素 >>> s=set1^set2 >>> s {'d', 'a', 'e'} #另外Python中还有一种不可改变的集合,那就是frozenset,不像set集合,可以增加删除集合中的元素,该集合中的内容是不可改变的,类似于字符串、元组。 #声明一个不可变集合 >>> f1=frozenset(['a', 's', 'd', 'f']) >>> f1 frozenset({'a', 'f', 's', 'd'}) #改变不可变集合中的元素,就会报AttributeError错误:AttributeError: 'frozenset' object has no attribute 'append' >>> f1=frozenset(['a', 's', 'd', 'f']) >>> f1.append('fff') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'append' >>> f1 frozenset({'a', 'f', 's', 'd'}) 复制代码
以上就是python中集合的简单使用!