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数据结构-元组集合的主要内容,如果未能解决你的问题,请参考以下文章

Python数据结构-元组集合

Python字符串列表元组集合字典方法

python学习小总结(列表元组字典集合字符串)

创建一个 Python 函数,该函数将为字符计数的元组创建一个字典,分配给元音、辅音或其他的键

Python学习2(列表元组字典,集合set)

python的数据类型