22.Python集合类型及常用内置方法

1.集合set

集合类型一个无序的不重复元素序列。(无法使用索引取值)
特征:用大括号括起来,可以存放多个元素,元素与元素用逗号隔开,元素自动去重只会保留一个。
集合的元素不能是列表和字典.
格式:(元素不能存列表和字典)
变量名 = {元素1, 元素2,} 

只有两种情况下猜会考虑使用集合:
1.去重操作
2.关系运行

2.集合的定义

set1 = {1, 2, 3, 4, 'xx', 5, (1,), 1, 2, }
print(set1, type(set1))

# {1, 2, 3, 4, 5, (1,), 'xx'} <class 'set'>
# 类型错误:不可哈希的类型:“xx” 

set1 = {1, [1, ]}
print(set1, type(set1))

# TypeError: unhashable type: 'list'

set1 = {1, {'k1', 18}}
print(set1, type(set1))

# TypeError: unhashable type: 'set'

3.去重

# 去重
set1 = {1, 2, 6, 5, 3, 7, 5, 4, 5, 2, 6, 1, 5, 5, 4, 5, 5, 9, 5, 8, 5, 6, 5, 6, 5, }

for i in set1:
    print(i, end=' ')

print(set1)
1 2 3 4 5 6 7 8 9 {1, 2, 3, 4, 5, 6, 7, 8, 9}
一使用字典的数据就会去重。

4.关系运算

将内置方法使用 符号 代替。
4.1交集
交集 & 两个集合公有的。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 & set2)  # {1, 3, 4}

4.2不交集
不交集 ^ 两个集合私有的。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 ^ set2)  # {2, 5, 6, 7, 8, 9}
4.3并集
并集 ^ 两个集合所有,去重。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7, 8, 9}
4.4差集
差集 - 两个集合相差。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}

print(set1 - set2)  # {8, 5, 7}
print(set2 - set1)  # {9, 2, 6}
4.4子集父集
子集 < <=
父集 > >=
返回结果为布尔值。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}

print(set1 > set2)  # False
print(set1 < set2)  # False
5.长度
len函数获取集合的元素个数。
set1 = {1, 3, 5, 7, 8, 4}
print(len(set1))  # 6

6.删除元素

.pop() 弹出
.clear() 清除
set1 = {1, 3, 5, 7, 8, 4}
set1.pop()
print(set1.clear())  # None

7.练习

1.关系运算
  有如下两个集合,pythons是学习python课程的同学名字集合,linuxs是报名linux学习的同学名字集合
  pythons={'百度','腾讯','阿里云','华为','小米','格力'}
  linuxs={'腾讯','华为','格力'}
  1. 求出即报名python又报名linux课程的同学名字集合
  2. 求出所有报名的同学名字集合
  3. 求出只报名python课程的同学名字
  4. 求出没有同时这两门课程的同学名字集合   
2.列表l = ['a','b',1,'a','a'],去重,得到新列表,且新列表无需保持列表原来的顺序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值