【Python】数据结构——元组与集合

举报
AXYZdong 发表于 2021/12/26 11:35:11 2021/12/26
【摘要】 元组和集合的创建,增删改查,元组和列表的转换以及集合的运算。

元组

元组(tuple),和列表非常相似,也是由一系列元素按照一定顺序排列而成的容器。

和列表区别:元组是不可变的(即元组中的值不可以增加、删除和改变),而列表是可变的。

1.创建元组

  • 直接使用 () ,这里有别于创建列表时使用的 []
>>> tuple1 = ('a','b',1,2)
>>> tuple1
('a', 'b', 1, 2)
  • () 可有可无
>>> tuple2 = 'a','b',1,2
>>> tuple2
('a', 'b', 1, 2)
  • 使用元组推导式,由于元组是不可变的,所以生成一个生成器对象。
>>> tuple3 = (i for i in range (1,3))
>>> tuple3
<generator object <genexpr> at 0x000002954017FA48>

创建只有一个元素的元组时,需要在元素的后面加一个逗号。

>>> tuple4 = (1)
>>> type(tuple4)
<class 'int'>
>>> tuple4
1
>>> tuple4 = (1,)
>>> type(tuple4)
<class 'tuple'>
>>> tuple4
(1,)
>>> tuple4 = 'a',
>>> type(tuple4)
<class 'tuple'>
>>> tuple4
('a',)

创建空元组

>>> a = tuple()		#第一种方法
>>> type(a)
<class 'tuple'>
>>> a
()
>>> b = ()			#第二种方法
>>> type(b)
<class 'tuple'>
>>> b
()

2.元组查看

元组是不可变的,因此元组中的值不可以增加、删除和改变,所以只能查看元组中的元素。(修改和删除元素会报错)

>>> tuple2 = 'a','b',1,2
>>> tuple2[0]
'a'
>>> tuple2[0]=1
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    tuple2[0]=1
TypeError: 'tuple' object does not support item assignment

3.元组和列表的转换

元组是不可变的(immutable),其通常包含不同种类的元素,并且通过解包或者索引来访问。

列表是可变的(mutable),其中的元素一般是同种类型,并且通过迭代访问。

  • 元组转换成列表
>>> tuple2 = 'a','b',1,2
>>> type (tuple2)
<class 'tuple'>
>>> list(tuple2)
['a', 'b', 1, 2]
  • 列表转换成元组
>>> list2 = ['a', 'b', 1, 2]
>>> type(list2)
<class 'list'>
>>> tuple(list2)
('a', 'b', 1, 2)

集合

python中集合和数学上的集合是一致的,不允许有重复的元素(即集合里面的元素唯一),而且可以进行交集、并集、差集等运算。

1.创建集合

>>> set1 = {1,2,3}
>>> print(set1)
{1, 2, 3}
>>> set2 = set(range(1,10))
>>> set3 = set((1,2,3))
>>> print(set2,set3)
{1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3}

2.添加元素和删除元素

>>> set1 = {1,2,3}     #添加元素
>>> set1.add(4)
>>> set1
{1, 2, 3, 4}
>>> set1.update([7,8]) #添加元素
>>> set1
{1, 2, 3, 4, 7, 8}
>>> if 7 in set1:      #删除元素
	set1.remove(7)	
>>> set1
{1, 2, 3, 4, 8}
>>> set2 = {'a', 'b', 'c'}
>>> set2.pop()		   #随机删除元素
'b'
>>> set2
{'a', 'c'}
>>> set2.clear()	   #清空集合元素
>>> set2
set()

3.集合运算

  • 交、并、差、对称差(不重合集)
>>> set1 = {1, 2, 3 ,'a'}
>>> set2 = {1, 'a', 'b', 'c'}
>>> print(set1.intersection (set2))  #交集
{1, 'a'}
>>> print(set1.union(set2))			#并集
{1, 2, 3, 'c', 'b', 'a'}
>>> print(set1.difference (set2))	#差集
{2, 3}
>>> print(set1.symmetric_difference (set2))	#对称差
{2, 3, 'c', 'b'}
>>> print(set1 & set2)	#交集
{1, 'a'}
>>> print(set1 | set2)	#并集
{1, 2, 3, 'c', 'b', 'a'}
>>> print(set1 - set2)	#差集
{2, 3}
>>> print(set1 ^ set2)	#对称差
{2, 3, 'c', 'b'}
  • 判断子集和超集
>>> print(set2.issubset(set1))
False
>>> print(set1.issuperset(set2))
False

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “收藏” “关注” 一键三连哦!


如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留个言。或者你有更好的想法,欢迎一起交流学习~~~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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