【Python从零到壹】Python的元组和集合

举报
互联网老辛 发表于 2021/06/09 01:00:47 2021/06/09
【摘要】 文章目录 1. 元组的概念1) 什么是元组2) 元组的创建方式 作者:互联网老辛开发时间:2021/4/4/0004 6:542. 元组的遍历3.集合的概念1) 什么是集合2) 集合的创建3) 集合的相关操作4)集合的关系及数据操作a)集合的关系b) 集合的数学操作 5)集合生成式总结 1. 元组的概念 1) 什么是元组 元组: P...

1. 元组的概念

1) 什么是元组

元组: Python的内置数据结构之一,是一个不可变的序列

不可变的序列指的是没有增删改的操作。
而之前我们学习的列表和字典,是可以进行增删改查的。

2) 元组的创建方式

元组的创建方式:

  • 直接小括号
    t=(‘python’,‘hello’,90)
  • 使用内置函数tupe()
    t=tpule((‘python’,‘hello’,90))
  • 只包含一个元组的元素需要使用逗号和小括号
    t=(100,)
    我们来用代码创建和研究:
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#创建元组
#1. 使用()
t=('python','yuanzu','hello',4)
#2. 使用内置函数tuple
t1=tuple(('python','hello','world'))


print(t,id(t))
print(t1,id(t1))

## 注意,元组的小括号可以省略

t2='python','hello'
print(t2,type(t2))
## 但这种形式有个问题,如果只有一个元素,需要加个逗号

t3='python',
print(type(t3))

#空元组
t4=()
t5=tuple()
print('空元组',t4,t5)

  

这里有一个问题: 为什么元组是一个不可变的序列,要这么设置。

  • 在多任务的环境下,同时操作对象时不需要加锁。
    但是在程序中尽量不要使用不可变序列

元组是可以查的,但是不能改,不会对内容造成破坏。

如果在元组中有可变列表,那么在元组中的列表的内容也不能修改,但可以添加元素。

因为添加元素不会有新的对象产生。
举例:

作者:互联网老辛

开发时间:2021/4/4/0004 6:54

#创建元组
#1. 使用()
t=('python','hello',[4,5,6])
print(t)
print(t[0],id(t[0]))
print(t[2],id(t[2]))
#修改元组是不允许的
t[0]='yuansu'

  

这里会报错,因为元组是不允许修改的
t[0]=‘yuansu’ 这个就无法修改
在这里插入图片描述
但是里面的列表可以增加:

# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#创建元组
#1. 使用()
t=('python','hello',[4,5,6])
print(t,id(t))
print(t[0],id(t[0]))
print(t[2],id(t[2]))
#修改元组是不允许的
#t[0]='yuansu'
#追加里列表内容
t1=t[2].append(100)
print(t1)
print(t,id(t))

  

可以看到在列表中追加元素,并没有改变ID
在这里插入图片描述

2. 元组的遍历

# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#创建元组

t=('python','hello',[4,5,6])
#1.使用索引获取,这种你得知道有多少种元素
print(t[0])
print(t[1])
print(t[2])

#2. 遍历元组
for i in t: print(i)

  

3.集合的概念

1) 什么是集合

集合相当于是没有value的字典,是Python的内置数据结构,与列表,字典一样都属于可变类型的序列。

2) 集合的创建

# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#1. 创建方式
#使用{}
s={2,3,4,5,6,7,7}
print(s)  #{2, 3, 4, 5, 6, 7}  集合会把相同的元素合并

#2. 使用内置函数创建

s1=set(range(6))
print(s1)

### 3. 使用set创建,把列表转换成集合,同时去掉了重复的元素
s2=set([1,1,1,2,3,4,5,6,6])
print(s2,id(s2),type(s2))

## 将元组转成集合
s3=set((1,2,55,67))
print(s3)

  

如何定义空集合

set()

这里需要注意的是; 集合是无序的

3) 集合的相关操作

  • 集合元素的判断操作
    in 或者not in
  • 集合元素的新增
    方法1: 调用add()一次添加一个元素
    方法2: 调用update() 至少添加一个元素
  • 集合中的删除操作
    remove() 一次删除一个指定的操作,如果指定的元素不存在就抛出异常
    discard() 方法,一次删除一个指定元素
    pop() 一次只删除任意一个元素
    clear() 情况集合

我们使用代码来操作:

# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#python 的简单操作
#判断元素是否在

s={2,3,4,5,6,7,7}
print(2 in s)
print(10 in s)
print(10 not in s)

## 集合元素的新增
s.add(50)
print(s) #{2, 3, 4, 5, 6, 7, 50}

s.update({200,300,400})
print(s)  #{2, 3, 4, 5, 6, 7, 200, 300, 400, 50}
s.update((20,30))  #添加元组
print(s)  #{2, 3, 4, 5, 6, 7, 200, 300, 400, 50, 20, 30}
s.update([1,2,3]) #添加列表
print(s)  #{1, 2, 3, 4, 5, 6, 7, 200, 300, 400, 50, 20, 30}

#删除操作
s.remove(300)
print(300 in s) #False
s.discard(300) #没有也不会抛出异常
print(s)  #{1, 2, 3, 4, 5, 6, 7, 200, 400, 50, 20, 30}
s.pop() #随机删除
print(s)# {2, 3, 4, 5, 6, 7, 200, 400, 50, 20, 30}



  

4)集合的关系及数据操作

a)集合的关系

  • 两个集合是否相等
    可以使用 == 或者!=来判断
  • 一个集合是否是另外一个集合的子集
    使用issubset进行判断
  • 一个集合是另一个集合的超集
    可以使用方法 issuperset
    A是B的超集
  • 两个集合没有交集
    可以调用 isdisjoint进行判断
  1. 两个集合是否相等:
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#python 的简单操作
#判断元素是否在

s1={2,3,4,5,6,7}
s2={2,3,4,8,9,0}
print(s1==s2)
print(s2!=s2)

  
  1. 一个集合是否是另一个集合的子集
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#python 的简单操作
#判断元素是否在

s1={2,3,4,5,6,7}
s2={2,3,4,8,9,0}
s3={2,3,4}

print(s3.issubset(s1)) #True
print(s2.issubset(s1)) #False


  

b) 集合的数学操作

在这里插入图片描述
我们继续从代码中来探讨:

# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6:54
#集合的数学操作

s1={2,3,4,5,6,7}
s2={2,3,4,8,9,0}
s3={2,3,4}


#交集
print(s1.intersection(s3)) #{2, 3, 4}
#或者使用
print(s1 & s3) #{2, 3, 4}

#并集
print(s1.union(s2)) #{0, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1 | s2) #{0, 2, 3, 4, 5, 6, 7, 8, 9}

#差集
print(s1.difference(s2)) #{5, 6, 7}
print(s1-s2) #{5, 6, 7}

#对称差集
print(s1.symmetric_difference(s2))  #{0, 5, 6, 7, 8, 9}
print(s1^s2) #{0, 5, 6, 7, 8, 9}

  

5)集合生成式

和列表生成式差不多,只需要把【】改为{}即可

# 作者:互联网老辛
# 开发时间:2021/4/4/0004 6s

s={i*i for i in range(10)}
print(s) #{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

  

总结

找了一张图来总结。到现在为止学习了不少数据类型了,如果记不住也没关系,在后面使用的过程中,多去总结和练习。
在这里插入图片描述

文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。

原文链接:zmedu.blog.csdn.net/article/details/115422404

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。