Python自学-内置数据结构(变量类型set)

集合-set

  • 集合是数学中的一个概念
  • 一对确定的无序的不重复的数据,集合中每一个数据成为一个元素
# 集合的定义
s = set()
print(type(s))
print(s,"\n")

# 如果只是用大括号定义,则定义的是一个 dict 类型
# 如果一定要用大括号定义集合,则大括号内一定要有值
d = {}
print(type(d))
print(d,"\n")

s = {1,2,3,4}
print(type(s))
print(s)
<class 'set'>
set() 

<class 'dict'>
{} 

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

集合的特征

  • 集合内数据无序,即无法使用索引和分片
  • 集合内部数据元素具有唯一性,可用来排除重复数据
  • 集合内的数据,str,int,float,tuple等,即内部只能放置可哈希数据
  • 集合本身不可哈希

集合序列操作

# 成员检测
# in, not in
s = {2,3,"JingTen","i","python"}
print(s)

if "python" in s:
    print("I like python.")
if 666 not in s:
    print("6个毛线")
{'python', 2, 3, 'i', 'JingTen'}
I like python.
6个毛线
# for 循环
s = {2,3,"JingTen","i","python"}
for i in s:
    print(i)
    
print("\n")

# 带有元组的集合遍历
s = {(1,2,3),("i","like","python"),(4,5,6)}
for k,m,n in s:
    print(k,"--",m,"--",n)
    
print("\n")

for k in s:
    print(k)
python
2
3
i
JingTen


i -- like -- python
4 -- 5 -- 6
1 -- 2 -- 3


('i', 'like', 'python')
(4, 5, 6)
(1, 2, 3)

集合的内涵

# 普通集合内涵
# 以下集合在初始化后自动去重
s = {23,223,454,55,3,2,3,3,2,4,5,6,4}
print(s,"\n")

ss = {i for i in s}
print(ss,"\n")

# 带条件的集合内涵
sss = {i for i in s if i % 2 == 0}
print(sss,"\n")

# 多循环的集合内涵
s1 = {1,2,3,4}
s2 = {"i","like","python"}

s = {m*n for m in s2 for n in s1}
print(s)
{2, 3, 4, 5, 454, 6, 23, 55, 223} 

{2, 3, 4, 5, 454, 6, 55, 23, 223} 

{2, 4, 454, 6} 

{'iiii', 'python', 'pythonpython', 'likelikelikelike', 'pythonpythonpython', 'like', 'likelikelike', 'pythonpythonpythonpython', 'ii', 'i', 'likelike', 'iii'}

集合函数/关于集合的函数

# len,max,min
s = {23,4,5,6,7,444,66,567,3}
print(len(s))
print(max(s))
print(min(s),"\n")

# set 生成一个集合
l = [1,2,3,4,3,4,444,2,3,4]
s = set(l)
print(s,"\n")

# add 向集合内添加元素
s = {1}
s.add(334)
print(s,"\n")

# clear 原地清空,原集合的 id 不变
s = {1,2,3,4,5}
print(s)
print(id(s))
s.clear()
print(id(s),"\n")

# copy 拷贝
# remove 移除指定的值,直接改变原有值,如果要删除的值不存在,则报错
# discard 移除指定的值,如果要移除的值不存在,则不报错
s = {11,23,4,1,56,66}
s.remove(4)
print(s)
s.discard(1)
print(s)
print("-"*40)
s.discard(10000)
print(s)

s.remove(10000)
9
567
3 

{1, 2, 3, 4, 444} 

{1, 334} 

{1, 2, 3, 4, 5}
72394120
72394120 

{1, 66, 11, 23, 56}
{66, 11, 23, 56}
----------------------------------------
{66, 11, 23, 56}
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-39-58c3c82b55a9> in <module>()
     34 print(s)
     35 
---> 36 s.remove(10000)

KeyError: 10000
# pop 随机移除一个元素(实际其内部有规律移除)
s = {1,2,3,4,5,6}
d = s.pop()
print(d)
print(s)
1
{2, 3, 4, 5, 6}
# 集合运算
# intersection 交集 &
# differenc 差集 -
# union 并集 |
# symmetric_difference 对称差集,返回两个集合中的元素,但不是共有的元素的集合 ^
# issubset 检查一个集合是否为另一个集合的子集
# issuperset 检查一个集合是否为另一个集合的父集
# isdisjoint 判断两个集合交集是否为 Null
s1 = {1,2,3,4,5,6}
s2 = {4,5,6,7,8}
s3 = {1,2,3}

s_1 = s1.intersection(s2)
print(s_1,"\n")
s_2 = s1.difference(s2)
print(s_2,"\n")
s_3 = s1.union(s2)
print(s_3,"\n")
s_4 = s1.symmetric_difference(s2)
print(s_4,"\n")
s_5 = s3.issubset(s1)
print(s_5,"\n")
s_6 = s1.issuperset(s3)
print(s_6,"\n")
s_7 = s1.isdisjoint(s2)
print(s_7)
{4, 5, 6} 

{1, 2, 3} 

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

{1, 2, 3, 7, 8} 

True 

True 

False

frozenset 冰冻集合

  • 冰冻集合就是不可以进行任何修改的集合
  • frozenset是一种特殊集合
# 创建冰冻集合
s = frozenset()
print(type(s))
print(s)
<class 'frozenset'>
frozenset()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值