Python入门(四):集合(set)的使用

471 阅读4分钟

作者:江夏

| 知乎:www.zhihu.com/people/1024…

| GitHub:github.com/JiangXia-10…

| CSDN:blog.csdn.net/qq_4115394…

| 掘金:juejin.cn/user/651387…

| 公众号:1024笔记

本文一共1598字,阅读时长9分钟

图片

在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中集合的简单使用!

最后欢迎关注公众号:1024笔记,免费获取海量学习资源(涵盖视频、源码、文档)!

其他推荐: