Python数据结构-元组集合
Posted 涤生大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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'))
方法2:使用python列表解析的方式实现
对比上述两种方法,获取的结果是一致的,但明显方法2要更优于方法1。
1 元组
在Python中,元组是一种不可变序列,包含零个或更多个值。它可以包含任何 Python 值,甚至可以包含其他元组,同时元组内的任何元素不允许被修改,一般使用 () 阔起,注意与列表的区别。
如上图示例,元组与Python列表使用方法类似,元组中的元素使用逗号分隔,空元组用 () 表示, 但只包含一个元素的元组(单元素元组)采用 不同寻常的表示法 (x,),如下所示:还记得之前讲过的type()方法没有,通过使用该方法可以看到省略单元素元组末尾的逗号,就不 是创建元组,而是用圆括号将表达式括起。 注意元组中末尾的逗号,:
在单元素元组中,末尾的逗号必不可少;而在包含更多元素的元组(和列表)中,以在末尾添加逗号,但并非必须这样做。
例如,(1,2,3,) 与 (1,2,3) 等价。
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)
>>>
创建新元组:
与字符串和列表一样,元组之间桐乡可以使用+和*进行运算,如下表:
运算表达式 | 结果值 | 描述过程 |
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 | 迭代 |
示例:
元组不可变指的是元组所指向内存的内容不可变:我们使用id()函数查看内存地址,可以看到发生了变化
1.2 Python元组函数
对于元组,Python同样提供了一些简单使用的内置函数,如下表:
方法 | 描述 |
len(tp) | 计算元组元素个数 |
max(tp) | 返回元组中元素最大值 |
min(tp) | 返回元组中元素最小值 |
tuple(tp) | 将可迭代系列转换为元组 |
2 集合
在 Python 中,集合是一系列不重复的元素。集合类似于字典(后面会提到),但只包含键,而没有相关联的值。可以使用大括号 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 ,因为 是用来创建一个空字典。
集合可以分为两类,常用于删除序列中重复的元素,如下示例
1. 可变集合,对于该类集合可以添加和删除元素;
2.不可变集合,该类集合创建后不可被修改;
创建集合:
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() | 给集合添加元素 |
使用如下:
元组、集合小练习:
1.元组:将字符串str="baby you are" 转化为元组
2.集合:列表 n1 = [1,3,5,7,12,14,16,18,23],计算任意元素相加为17的集合
以上是关于Python数据结构-元组集合的主要内容,如果未能解决你的问题,请参考以下文章