【Python】数据结构——元组与集合
【摘要】 元组和集合的创建,增删改查,元组和列表的转换以及集合的运算。
元组
元组(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)