python数据类型之集合

本文介绍了Python中的集合数据类型,包括集合的定义、创建方法、特性、元素的增删改查以及交集、并集、差集等集合运算。通过实例展示了如何使用set()函数、成员操作符、update()、add()、remove()、discard()和clear()等方法,以及如何进行集合运算。

集合是什么——set

集合是不重复元素的无序集,它兼具了列表和字典的一些性质。集合类似字典的特点:用花括号“{}”来定义,其元素是非序列类型的数据,也就是没有序列,并且集合中的元素不可重复,也必须是不变对象,类似于字典中的键。集合的内部结构与字典很相似,区别是“只有键没有值”。另一方面,集合也具有一些列表的特点:持有一系列元素,并且可原处修改。由于集合是无序的,不记录元素位置或者插入点,因此不支持索引、切片或其他类序列的操作。

集合的创建

(1)集合里面的元素是不可重复的
输入

set = {1,2,3,1,2,3,4}
print(set,type(set))

输出

{1, 2, 3, 4} <class 'set'>

(2)如何定义一个空集合
输入

s2 = {}
print(s2)
print(type(s2))
s3 = set([])
print(s3)
print(type(s3))

输出

{}
<class 'dict'>
set()
<class 'set'>

一定要注意空集合的定义方式

(3)集合应用
将列表中的重复元素去掉
输入

cai = [1,2,3,1,2,3]
print(type(cai))
print(list(set(cai)))

输出

<class 'list'>
[1, 2, 3]

(4)由字符串创建:用函数 set(str) 将str中的字符拆开以形成集合
输入

s1 = set('hello python')
print(s1)
print(type(s1))

输出

{'l', 'e', 'y', ' ', 'n', 't', 'o', 'h', 'p'}
<class 'set'>

(5)列表或元组创建
输入

s1 = set([1,‘name’,2,‘age’,‘hobby’])
print(s1,type(s1))
s2 = set((1,2,3))
print(s2,type(s2))

输出

{1, 2, ‘name’, ‘age’, ‘hobby’} <class ‘set’>
{1, 2, 3} <class ‘set’>

集合的特性

集合只支持成员操作符号 for循环

(1)成员操作符
输入

cai = {1,2,3,1,2,3}
print(1 in cai)
print(4 in cai)

输出

True
False

(2)for循环
输入

cai = {1,2,3,1,2,3}
for i in cai:
    print(i)

输出

1
2
3

集合的增加,更新和删除

(1)集合的增加——set.add(x)
输入

s = {6,7,8,9}
s.add(1)
print(s)

输出

{1, 6, 7, 8, 9}

(2)集合的更新——set.update
输入

s = {6,7,8,9}
s.update({5,3,2})
print(s)

输出

{1, 2, 3, 5, 6, 7, 8, 9}

(3)集合的删除
第一种方式:set.pop() ——删除并返回集合中的任意元素
输入

s = {6,7,8,9}
item = s.pop()
print(s)
print(item)

输出

{9, 6, 7}
8

第二种方式:set.remove(x) ——删除集合中的元素x,如果x不存在则报错,返回值为none
输入

s = {6,7,8,9}
item = s.remove(6)
print(s)
print(item)

输出

{8, 9, 7}
None

第三种方式:set.discard(x) ——删除集合中的元素x,如果x不存在则什么也不做,返回值为none
输入

s = {6,7,8,9}
item = s.discard(6)
item1 =s.discard(1)
print(s)
print(item)
print(item1)

输出

{8, 9, 7}
None
None

第四种方式:set.clear() ——清空集合中的所有元素
输入

s = {6,7,8,9}
item = s.clear()
print(s,type(s))
print(item)

输出

set() <class 'set'>
None

集合的运算(交集 并集 差集)

(1)交集——intersection或者&
输入

s1 = {1,2,3}
s2 = {2,3,4}
print('交集:',s1.intersection(s2))
print('交集:',s1 & s2)

输出

交集: {2, 3}
交集: {2, 3}

(2)并集——union和|
输入

s1 = {1,2,3}
s2 = {2,3,4}
print('并集:',s1.union(s2))
print('并集:',s1 | s2)

输出

并集: {1, 2, 3, 4}
并集: {1, 2, 3, 4}

(3)差集——difference
输入

s1 = {1,2,3}
s2 = {2,3,4}
print('差集:',s1.difference(s2))  #s1 - (s1 & s2)
print('差集:',s2.difference(s1))

输出

差集: {1}
差集: {4}

(4)返回值为布尔值的集合运算
输入

s3 = {1,2}
s4 = {1,2,3}
##s3的元素是否包含在s4中
print(s4.issuperset(s3))
##s3是否是s4的子集
print(s3.issubset(s4))
##s4中是否包含s3的元素,不包含返回 True,否则返回 False。
print(s3.isdisjoint(s4))

输出

True
True
False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值