0
点赞
收藏
分享

微信扫一扫

Python数据结构-元组、集合


上次提及到的,使用列表解析删除字符串中的所有元音(aeiou)。

方法1:使用函数方法实现

def string_list(string):
"""获取字符串中非元音的字符串"""
return ''.join([c for c in string if c.lower() not in 'aeiou'])

if __name__ == '__main__':
print(string_list('Whati s wrong with you'))

Python数据结构-元组、集合_python

方法2:使用python列表解析的方式实现

Python数据结构-元组、集合_python_02

对比上述两种方法,获取的结果是一致的,但明显方法2要更优于方法1。

1 元组

在Python中,元组是一种不可变序列,包含零个或更多个值。它可以包含任何 Python 值,甚至可以包含其他元组,同时元组内的任何元素不允许被修改,一般使用 () 阔起,注意与列表的区别。

Python数据结构-元组、集合_字符串_03

如上图示例,元组与Python列表使用方法类似,元组中的元素使用逗号分隔,空元组用 () 表示, 但只包含一个元素的元组(单元素元组)采用 不同寻常的表示法 (x,),如下所示:还记得之前讲过的type()方法没有,通过使用该方法可以看到省略单元素元组末尾的逗号,就不 是创建元组,而是用圆括号将表达式括起。 注意元组中末尾的逗号,:

在单元素元组中,末尾的逗号必不可少;而在包含更多元素的元组(和列表)中,以在末尾添加逗号,但并非必须这样做。
例如,(1,2,3,) 与 (1,2,3) 等价。

Python数据结构-元组、集合_python_04

1.1 元组的不可变性

元组不可变并不是说元组中的元素不能被修改,这种特征并不独特,字符串、整数和浮点数都是不可变的。 如果要修改元组,就必须创建一个体现更改的新元组。例如要删除tp元组中的一个元素,我们可以执行如下流程。从某种促进角度看,这种方式禁止轻易修改元组,杜绝了轻微错误的深坑,但同时也增加了修改元组的时间和所需内存。所以元组不适合在频繁修改的情况中使用,若需要频繁改动,上一次所提到的列表才是最佳选择。

[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> tp = (1,3,6,9)
>>> tp
(1, 3, 6, 9)
>>> tp_1 = tp[1:]
>>> tp_1
(3, 6, 9)
>>> tp
(1, 3, 6, 9)
>>>

创建新元组:

Python数据结构-元组、集合_字符串_05

与字符串和列表一样,元组之间桐乡可以使用+和*进行运算,如下表:


运算表达式



结果值



描述过程



len((1, 2, 3))



3



计算元素个数



(1, 2, 3) + (4, 5, 6)



(1, 2, 3, 4, 5, 6)



连接



('Hi!',) * 4



('Hi!', 'Hi!', 'Hi!', 'Hi!')



复制



3 in (1, 2, 3)



True



元素是否存在



for x in (1, 2, 3): print (x,)



1 2 3



迭代


示例:

Python数据结构-元组、集合_开发语言_06

元组不可变指的是元组所指向内存的内容不可变:我们使用id()函数查看内存地址,可以看到发生了变化

Python数据结构-元组、集合_字符串_07

1.2 Python元组函数

对于元组,Python同样提供了一些简单使用的内置函数,如下表:


方法



描述



len(tp)



计算元组元素个数



max(tp)



返回元组中元素最大值



min(tp)



返回元组中元素最小值



tuple(tp)



将可迭代系列转换为元组


Python数据结构-元组、集合_数据结构_08

2 集合

在 Python 中,集合是一系列不重复的元素。集合类似于字典(后面会提到),但只包含键,而没有相关联的值。可以使用大括号 ​{ }​ 或者 ​set()​ 函数创建集合,注意:创建一个空集合必须用​ set()​ 而不是 ​{ }​,因为 ​{ }​ 是用来创建一个空字典。

集合可以分为两类,常用于删除序列中重复的元素,如下示例

1. 可变集合,对于该类集合可以添加和删除元素;

2.不可变集合,该类集合创建后不可被修改;

Python数据结构-元组、集合_字符串_09

创建集合:

1.list = {v1,v2,v3,......}

2.set(v1,v2,v3,....)

2.1 Python集合函数

如下表:


方法



描述



add()



为集合添加元素



clear()



移除集合中的所有元素



copy()



拷贝一个集合



difference()



返回多个集合的差集



difference_update()



移除集合中的元素,该元素在指定的集合也存在。



discard()



删除集合中指定的元素



intersection()



返回集合的交集



intersection_update()



返回集合的交集。



isdisjoint()



判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。



issubset()



判断指定集合是否为该方法参数集合的子集。



issuperset()



判断该方法的参数集合是否为指定集合的子集



pop()



随机移除元素



remove()



移除指定元素



symmetric_difference()



返回两个集合中不重复的元素集合。



symmetric_difference_update()



移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。



union()



返回两个集合的并集



update()



给集合添加元素


使用如下:

Python数据结构-元组、集合_数据结构_10

元组、集合小练习:

1.元组:将字符串str="baby you are" 转化为元组

2.集合:列表 n1 = [1,3,5,7,12,14,16,18,23],计算任意元素相加为17的集合


举报

相关推荐

0 条评论