【Python】基本数据类型--集合

一、定义

集合是无序的对象集合,使用大括号{ }包围,元素之间用逗号分隔

集合是动态的,可以随时添加或删除元素

集合是异构的,可以包含不同类型的数据

集合中元素唯一

二、创建

  • 通过大括号创建
  • 通过构造方法set()创建
  • 通过集合推导式创建
# 大括号创建
st1 = {1, "2", True}
print(st1)            # 输出:{1, "2"} 因为元素唯一,1和True重复

# 构造方法set()创建
st2 = set()
print(st2)            # 输出:set()
st2 = set("good")     # 字符串、元组、列表、集合、字典等均可
print(st2)            # 输出:{'d', 'o', 'g'}

# 集合推导式创建
st3 = {i for i in range(0,4)}
print(st3)            # 输出:{0, 1, 2, 3}

# 注意:不要单独使用{}创建空集合
st4 = {}
print(st4)            # 输出:{}
print(type(st4))      # 输出:<class 'dict'>

三、集合使用

成员检测

in:检查某个元素是否在集合中。如果在返回True,否则返回False。

not in:检查一个集合是否不包含某个元素。如果不在返回True,否则返回False。

st = {i for i in range(1,4)}
print(1 in st)            # 输出:True
print(100 not in st)      # 输出:True

四、常用方法

1、add()

将单个对象添加到集合中

写法:set.add(item)

入参:对象item

返回:None

st = {0, 1, 2, 3}
st.add(False)
st.add('good')
print(st.add(99))    # 输出:None
print(st)            # 输出:{0, 1, 2, 3, 99, 'good'}

2、update()

将一个可迭代对象的所有元素,添加到集合

写法:set.update(iterable)

入参:可迭代对象iterable

返回:None

st = {1}
st.update(('a', 'b', 'c'))
print(st.update("good"))    # 输出:None
print(st)                   # 输出:{1, 'a', 'b', 'o', 'c', 'd', 'g'}

3、remove()

从集合中移除指定元素item

写法:set.remove(item)

入参:指定元素item

返回:None

目标元素必须已存在,否则会报KeyError

st = {1, 2, 3}
print(st.remove(2))     # 输出:None
print(st)               # 输出:{1, 3}
st.remove(99)
print(st)               # KeyError: 99

4、discard()

从集合中移除指定元素item

写法:set.discard(item)

入参:指定元素item

返回:None

目标元素不存在也不会报错

st = {1, 2, 3}
print(st.discard(2))    # 输出:None          
print(st)               # 输出:{1, 3}
st.discard(99)
print(st)               # 输出:{1, 3}

5、pop()

从集合中随机移除一个元素

写法:set.pop()

入参:无

返回:被移除的元素

如果集合为空,则引发KeyError错误

st = {1, 2}
st.pop()
print(st)            # 输出:{2} 或者 {1}
print(st.pop())      # 输出:被移除的 2 或者 1
print(st)            # 输出:set()
st.pop()             # KeyError: 'pop from an empty set'

6、clear()

清空集合,移除所有元素

入参:无

返回:None

st = {1, 2, 3, 'a', 'b'}
print(st.clear())    # 输出:None
print(st)            # 输出:set()

五、集合运算

1、交集运算

方法:intersection()

操作符:&

写法:set1.intersection(set2),set1 & set2

st1 = {1, 3, 2}
st2 = {5, 1, 4}
print(st1.intersection(st2))    # 输出:{1}
print(st1 & st2)                # 输出:{1}

2、并集运算

方法:union()

操作符:|

写法:set1.union(set2),set1 | set2

st1 = {1, 3, 2}
st2 = {5, 1, 4}
print(st1.union(st2))           # 输出:{1, 2, 3, 4, 5}
print(st1 | st2)                # 输出:{1, 2, 3, 4, 5}

3、差集运算

方法:difference()

操作符:-

写法:set1.difference(set2),set1 - set2

st1 = {1, 3, 2}
st2 = {5, 1, 4}
print(st1.difference(st2))      # 输出:{2, 3}
print(st1 - st2)                # 输出:{2, 3}

六、集合推导式 

集合推导式是指循环创建集合,类似列表推导式

写法:[x for x in … if …]

# for循环创建集合
st1 = set()
for i in 'hello world':
    if i in 'good':
        st1.add(i)
print(st1)            # 输出:{'d', 'o'}

# 集合推导式创建集合
st2 = {i for i in 'hello world' if i in 'good'}
print(st2)            # 输出:{'d', 'o'}

猜你喜欢

转载自blog.csdn.net/Yocczy/article/details/132025700