当前位置:   article > 正文

Python数据系列(三)- 元组Tuple:Python的“不可变序列”_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语句来删除整个元组

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

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

  • 通过下标进行访问

1.1、声明:

L=(1,2,3)

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

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

1.2、创建元组

  1. In [1]: 1,2,3
  2. Out[1]: (1, 2, 3)
  3. In [2]: ()
  4. Out[2]: ()
  5. In [3]: (1,)
  6. Out[3]: (1,)
  7. In [4]: 32
  8. Out[4]: 32
  9. In [5]: 32,
  10. Out[5]: (32,)
  11. In [6]: (32,)
  12. Out[6]: (32,)
  13. In [7]: 3*(32+3)
  14. Out[7]: 105
  15. In [8]: 3*(32+3,)
  16. Out[8]: (35, 35, 35)

二、元组基本操作

  1. In [9]: t=(a,b,(1,2))
  2. In [10]: t[1]   # 取元组内元素
  3. Out[10]: b
  4. In [11]: t[2]
  5. Out[11]: (1, 2)
  6. In [12]: t[2][1]
  7. Out[12]: 2
  8. In [13]: t1=(12,13,14)
  9. In [14]: t2=t1+t   # 元组的+号连接
  10. In [15]: t2
  11. Out[15]: (12, 13, 14, a, b, (1, 2))
  12. In [16]: del t2   # 删除元组
  13. In [17]: t2
  14. ---------------------------------------------------------------------------
  15. NameError                                 Traceback (most recent call last)
  16. <ipython-input-17-7ac3afd84e12> in <module>()
  17. ----> 1 t2
  18. NameError: name t2 is not defined
  19. In [18]: list_a=[1,2,3]
  20. In [19]: tuple(list_a)   # list列表转化为元组
  21. Out[19]: (1, 2, 3)
  22. In [20]: tuple(abc)    # str转化为元组
  23. Out[20]: (a, b, c)
  24. In [21]: tuple(a,b,c)
  25. ---------------------------------------------------------------------------
  26. TypeError                                 Traceback (most recent call last)
  27. <ipython-input-21-1b062a453ca1> in <module>()
  28. ----> 1 tuple(a,b,c)
  29. TypeError: tuple() takes at most 1 argument (3 given)
  30. In [22]: tuple((abc))
  31. ---------------------------------------------------------------------------
  32. NameError                                 Traceback (most recent call last)
  33. <ipython-input-22-da0a3eef4197> in <module>()
  34. ----> 1 tuple((abc))
  35. NameError: name abc is not defined
  36. In [23]: tuple((a,b,c))
  37. ---------------------------------------------------------------------------
  38. NameError                                 Traceback (most recent call last)
  39. <ipython-input-23-1f4af24915b9> in <module>()
  40. ----> 1 tuple((a,b,c))
  41. NameError: name a is not defined
  42. In [24]: tuple((1,2,3))
  43. Out[24]: (1, 2, 3)
  44. In [25]: len((1,2,3))   # 求元组长度
  45. Out[25]: 3
  46. In [26]: (1,2,3)+(4,5,6)   # 元组连接
  47. Out[26]: (1, 2, 3, 4, 5, 6)
  48. In [27]: ("a")*4   # 字符串复制
  49. Out[27]: aaaa
  50. In [28]: ("a",)*4   # 元组复制
  51. Out[28]: (a, a, a, a)
  52. In [29]: 1 in (1,2,3)  # 检查元素是否在元组内
  53. Out[29]: True
  54. In [30]: for x in (1,2,3):  # 打印元组内元素
  55.    ...:     print(x)
  56.    ...:
  57. 1
  58. 2
  59. 3
  60. In [31]: max((1,2,3))   # 返回元组最大值
  61. Out[31]: 3

三、总结

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

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

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

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

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

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

往期回顾

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/305558?site
推荐阅读
相关标签
  

闽ICP备14008679号