Python基本数据类型之集合

变量类型之集合

一、集合的性质

  • 集合是可变的数据类型。(只有增删,没有改)
  • 集合中只能存放不可变数据类型(数字,字符串、元组等不可变数据类型)。
  • 集合是无序的数据类型。
  • 集合的容器符号:{ },数据类型:set( )。
  • 集合set是一个无序的不重复元素序列
  • 集合的三大特性:
    • 确定性:一个元素,只有在和不在两种可能。
    • 无序性:集合中元素没有固定位置。
    • 互异性:一个集合中不可能出现重复元素。

二、集合的基本操作

  • 集合能实现的基本操作有:
    • 创建空集合:set( )。
    • 集合的增删:add、update,discard、remove、pop、clear。
    • 集合的遍历:for循环遍历,不能使用len方法取下标(无序性)。
    • 集合的成员运算:in、not in 。
    • 集合的运算:交(&)、并( | )、差( - )、对称差( ^ )。
1.创建空集合
s1 = set()
print(s1, type(s1))
# set() <class 'set'>
2.集合的增删
  • 集合的增操作:
    • add: 向集合中添加元素
s1 = set()
s1.add(1)
s1.add('abc')
print(s1)
# {1, 'abc'}
  • update: 从一个容器中将所有的元素添加到集合中
s1 = {1, 'abc'}
s1.update('hello')
print(s1)
# {1, 'h', 'l', 'e', 'o', 'abc'}
  • 集合的删除操作:
    • discard: 删除某个指定的元素,重复删除不报错,元素不存在也不会报错
s1 = {1, 'h', 'l', 'e', 'o', 'abc'}
s1.discard(1)
s1.discard(1)
print(s1)
# {'h', 'l', 'e', 'o', 'abc'}
  • remove: 删除某个指定的元素,重复删除报错,元素不存在会报错
# s1.remove('abc')
s1.remove('abc')
print(s1)
# 打印结果为:{'h', 'o', 'e', 'l'}
# 重复删除会报错 s1.remove('abc')
               KeyError: 'abc'
  • pop: 删除集合中第一个元素(不常用),可以显示被删除的元素
s1 = {'h', 'o', 'e', 'l'}
s1.pop()
print(s1.pop())
print(s1)
# 打印结果为:h
        {'l', 'e', 'o'}
  • clear: 清空集合,不管里边有没有元素,返回的结果永远是空的集合
s1.clear()
print(s1)
# set()
3.集合的遍历
  • 由于集合是一种可变的无序的数据类型,即没有下标,不能通过len方法遍历集合,集合只有直接遍历。
s3 = {1, 2, 3, 4}
for i in s3:
	print(i)
# 1 2 3 4
4.集合的成员运算:in 、not in。
  • 成员运算返回的结果为布尔值类型bool:True or False。
thisset = {'Google', 'Runoob', 'Taobao'}
print('Runoob' in thisset)
print('Facebook' in thisset)
# 打印结果为:True
			False
5.集合的运算
  • 集合的运算有以下几种:

    • 集合的交集:&
    • 集合的并集:|
    • 集合的差集:-
    • 集合的对称差:^
  • 集合的运算的实际应用:

    • 集合的交集:&
a = {1, 3, 5, 7, 9}
b = {1, 2, 3 ,4, 5}
print(a & b)
# {1, 3, 5}
  • 集合的并集:|
print(a | b)
# {1, 2, 3, 4, 5, 7, 9}
  • 集合的差集:-
print(a - b)
print(b - a)
# 打印结果为:{7, 9}
			{2, 4}
  • 集合的对称差:^
print(a ^ b)
# 打印结果为:{2, 4, 7, 9}

三、集合的推导式

  • 集合的推导式有两种:
    • 格式一:{表达式 for item in 集合}
    • 格式二:{表达式 for item in 集合 if 条件}
  • 集合的推导式的应用:
    • 格式一:{表达式 for item in 集合}
# 计算数字1, 2, 3 的平方和。
new_set = {i ** 2 for i in (1, 2, 3)}
print(new_set)
# 打印结果为:{1, 4, 9}
  • 格式二:{表达式 for item in 集合 if 条件}
# 判断不是abc的字母并输出:
new_set1 = {x for x in 'abracadabra' if x not in 'abc'}
print(new_set1,type(new_set1))
# 打印结果为:{'r', 'd'} <class 'set'>

tem in 集合 if 条件}

# 判断不是abc的字母并输出:
new_set1 = {x for x in 'abracadabra' if x not in 'abc'}
print(new_set1,type(new_set1))
# 打印结果为:{'r', 'd'} <class 'set'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stiinput

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值