python---集合

1. 什么是集合{}?

集合(set)是一个无序的不重复元素序列。它是可迭代的,没有重复元素(每个元素都是唯一的)的

○ 集合中的元素不能重复。

○ 集合中的元素是不可变的(不能修改),但整个集合是可变的。

○ 没有索引附加到python集中的任何元素。因此,它们不支持任何索引或切片操作。

2. 创建集合:不能直接用{}创建空集合,{}表示的是空字典

set_val = {1, 2, 3, 4}

empty_set = set()
str_val = 'hello Python'
set_val = set(str_val)
print(set_val)
# 运行结果: {' ', 'y', 't', 'e', 'l', 'n', 'h', 'o', 'P'} 无序的,去重的
set_val = {1, 'hello', (1, 2), [1, 2, 3]}
print(set_val)
# 运行结果: TypeError: unhashable type: 'list', 集合里边的元素应该是不可变数据

3. 集合的常见操作

增 add()

set_val = {1, 'hello', (1, 2)}
set_val.add('python')
print(set_val)

改 update(

set_val = {1, 'hello', (1, 2)}
new_set = {'python', 'C++'}
set_val.update(new_set)
print(set_val)
# 运行结果: {1, (1, 2), 'hello', 'python', 'C++'} 无序的

del 删除整个集合

set_val = {1, 'hello', (1, 2)}
new_set = {'python', 'C++'}
set.update(new_set)
del new_set
print(set_val)
# 运行结果: {1, (1, 2), 'hello'} 无序的

pop() 随机删除元素

set_val = {1, 'hello', (1, 2)}
set_val.pop()
print(set_val)

remove()移除指定元素,当元素不存在时提示KeyError

复制代码
set_val = {1, 'hello', (1, 2)}
set_val.remove(1)
print(set_val)
# 运行结果: {1(1, 2), 'hello'} 无序的

set_val = {1, 'hello', (1, 2)}
set_val.remove(2)
print(set_val)
# 运行结果:KeyError: 2
复制代码

discard() 移除指定元素,当元素不存在时,不报错 

复制代码
set_val = {1, 'hello', (1, 2)}
set_val.discard((1, 2))
print(set_val)
# 运行结果: {1, 'hello'} 无序的

set_val = {1, 'hello', (1, 2)}
set_val.discard(2)
print(set_val)
# 运行结果:{'hello', 1, (1, 2)} 无序的
复制代码

 查 in

set_val = {1, 'hello', (1, 2)}
if 1 in set_val:
    print('该元素在集合里')
else:
    print('该元素不在集合里')
    
# 运行结果: 该元素在集合里

 

集合的运算

交集---intersection()函数:移除两个集合都不存在的元素,方法返回一个存在相同元素的新集合

 

复制代码
set_a = {1, 'a', (1, 2)}
set_b = {1, 'b', (1, 2, 3)}
set_val = set_a.intersection(set_b)
print(set_val)
print(set_a)
print(set_b)

"""
运行结果:生成一个新的集合, set_a和set_b没变化
{1}---set_val
{1, (1, 2), 'a'}---set_a
{1, 'b', (1, 2, 3)}---set_b
"""
复制代码

intersection_update()函数:移除两个集合都不存在的元素

复制代码
set_a = {1, 'a', (1, 2)}
set_b = {1, 'b', (1, 2, 3)}
set_val = set_a.intersection_update(set_b)
print(set_val)
print(set_a)
print(set_b)

"""
运行结果:
None
{1}---set_a
{1, 'b', (1, 2, 3)}---set_b
"""
复制代码

 并集---union(): 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只出现一次 

复制代码
set_a = {1, 'a', (1, 2)}
set_b = {1, 'b', (1, 2, 3)}
set_val = set_a.union(set_b)
print(set_val)
print(set_a)
print(set_b)

"""
运行结果:生成一个新的集合, set_a和set_b没变化
{1, (1, 2), 'a', (1, 2, 3), 'b'}---set_val
{1, (1, 2), 'a'}---set_a
{1, 'b', (1, 2, 3)}---set_b
"""
复制代码

 差集---different(): 移除两个集合都存在的元素,方法返回一个移除都存在元素后的集合 

复制代码
set_a = {1, 'a', (1, 2)}
set_b = {1, 'b', (1, 2, 3)}
set_val = set_a.difference(set_b)
print(set_val)
print(set_a)
print(set_b)

"""
运行结果:set_a移除都存在的元素1,生成一个新的集合, set_a和set_b没变化
{(1, 2), 'a'}---set_value
{1, 'a', (1, 2)}---set_a
{1, (1, 2, 3), 'b'}---set_b
"""
复制代码

 difference_update():移除两个集合都存在的元素,没有返回值 

复制代码
set_a = {1, 'a', (1, 2)}
set_b = {1, 'b', (1, 2, 3)}
set_val = set_a.difference_update(set_b)
print(set_val)
print(set_a)
print(set_b)

"""
运行结果:set_a移除都存在的元素1, set_b没变化
None
{(1, 2), 'a'}---set_a
{1, (1, 2, 3), 'b'}---set_b
"""
复制代码

 

posted @   ElsaWang  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示