Python数据系列(三)- 元组Tuple:Python的“不可变序列”

目录

元组Tuple具有如下的特点:

声明:

创建元组

基本元组操作


本系列要对Python在数据处理中经常用的列表(list)、元组(tuple)、字典(dictionary)、array(数组)-numpy、DataFrame-pandas 、集合(set)等数据形式的特征、常用操作进行详述。

Python数据系列:

Python数据系列(一)- 列表List:Python的“苦力”

Python数据系列(二)- 字典Dictionary:Python的“大胃王”

今天,开启本系列的第三篇文章---Python数据系列(三)- 元组Tuple:Python的“不可变序列”。

元组Tuple具有如下的特点:

  • 不可变序列,元组中的元素是不允许删除的,但可以使用del语句来删除整个元组

  • 元组是以圆括号“()”包围的数据集合,不同成员以“,”分隔

  • 与列表不同:元组中数据一旦确立就不能改变

  • 通过下标进行访问

声明:

L=(1,2,3)

含0个元素的元组: L = ()

含1个元素的元组:L=(1,) 注意有逗号

创建元组

In [1]: 1,2,3
Out[1]: (1, 2, 3)

In [2]: ()
Out[2]: ()

In [3]: (1,)
Out[3]: (1,)

In [4]: 32
Out[4]: 32

In [5]: 32,
Out[5]: (32,)

In [6]: (32,)
Out[6]: (32,)

In [7]: 3*(32+3)
Out[7]: 105

In [8]: 3*(32+3,)
Out[8]: (35, 35, 35)

基本元组操作

In [9]: t=(a,b,(1,2))

In [10]: t[1]   # 取元组内元素
Out[10]: b

In [11]: t[2]
Out[11]: (1, 2)

In [12]: t[2][1]
Out[12]: 2

In [13]: t1=(12,13,14)

In [14]: t2=t1+t   # 元组的+号连接

In [15]: t2
Out[15]: (12, 13, 14, a, b, (1, 2))

In [16]: del t2   # 删除元组

In [17]: t2
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-17-7ac3afd84e12> in <module>()
----> 1 t2

NameError: name t2 is not defined

In [18]: list_a=[1,2,3]

In [19]: tuple(list_a)   # list列表转化为元组
Out[19]: (1, 2, 3)

In [20]: tuple(abc)    # str转化为元组
Out[20]: (a, b, c)

In [21]: tuple(a,b,c)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-21-1b062a453ca1> in <module>()
----> 1 tuple(a,b,c)

TypeError: tuple() takes at most 1 argument (3 given)

In [22]: tuple((abc))
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-22-da0a3eef4197> in <module>()
----> 1 tuple((abc))

NameError: name abc is not defined

In [23]: tuple((a,b,c))
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-23-1f4af24915b9> in <module>()
----> 1 tuple((a,b,c))

NameError: name a is not defined

In [24]: tuple((1,2,3))
Out[24]: (1, 2, 3)

In [25]: len((1,2,3))   # 求元组长度
Out[25]: 3

In [26]: (1,2,3)+(4,5,6)   # 元组连接
Out[26]: (1, 2, 3, 4, 5, 6)

In [27]: ("a")*4   # 字符串复制
Out[27]: aaaa

In [28]: ("a",)*4   # 元组复制
Out[28]: (a, a, a, a)

In [29]: 1 in (1,2,3)  # 检查元素是否在元组内
Out[29]: True

In [30]: for x in (1,2,3):  # 打印元组内元素
    ...:     print(x)
    ...:
1
2
3

In [31]: max((1,2,3))   # 返回元组最大值
Out[31]: 3

看了前面那么多对元组的介绍,可能会想有谁会需要像元组那样的不可变序列呢?难道就不能在不改变其中内容的情况下,坚持使用列表吗?Python数据系列(一)- 列表List:Python的“苦力”

一般来说这是可行的。但是由于以下两个重要的原因,元组是不可能替代的:

  • 元组可以在映射(和集合的成员)中当作键使用---而列表则不行;

  • 元组作为很多内建函数和方法的返回值存在,也就是说你必须对元组进行处理,只要不尝试修改元组,那么,“处理”元组在绝大多数情况下就是把他们当作列表来进行操作(出去一下元组没有的方法,如index和count)

一般来说,列表可能更能够满足对序列的所有需求,除特殊场景需要,推荐使用list列表。

本系列下一篇文章,我们探讨一下array(数组)-numpy,这是一个在AI领域常常被用到的数据形式。

往期回顾

  1. 知识图谱基础(一)- 什么是知识图谱

  2. 知识图谱基础(二)- 知识图谱的知识表达系统

  3. 知识图谱基础(三)- schema的构建

  4. Python数据系列(一)- 列表List:Python的“苦力”

  5. Python数据系列(二)- 字典Dictionary:Python的“大胃王”

发布了74 篇原创文章 · 获赞 64 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/wsLJQian/article/details/103496518