赞
踩
本系列要对Python在数据处理中经常用的列表(list)、元组(tuple)、字典(dictionary)、array(数组)-numpy、DataFrame-pandas 、集合(set)等数据形式的特征、常用操作进行详述。
Python数据系列:
今天,开启本系列的第三篇文章---Python数据系列(三)- 元组Tuple:Python的“不可变序列”。
不可变序列,元组中的元素是不允许删除的,但可以使用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领域常常被用到的数据形式。
往期回顾
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。