请选择 进入手机版 | 继续访问电脑版

笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

5.3. 元组和序列

发布者: 笨鸟自学网

我们知道列表和字符串有很多通用的属性,例如索引和切割操作。它们是 序列 类型(参见 Sequence Types — list, tuple, range )中的两种。因为 Python 是一个在不停进化的语言,也可能会加入其它的序列类型,这里介绍另一种标准序列类型: 元组 。

一个元组由数个逗号分隔的值组成,例如:

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> # Tuples are immutable:
... t[0] = 88888
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> # but they can contain mutable objects:
... v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])

如你所见,元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可以有或没有括号,不过经常括号都是必须的(如果元组是一个更大的表达式的一部分)。不能给元组的一个独立的元素赋值(尽管你可以通过联接和切割来模拟)。还可以创建包含可变对象的元组,例如列表。

虽然元组和列表很类似,它们经常被用来在不同的情况和不同的用途。元组有很多用途。例如 (x, y) 坐标对,数据库中的员工记录等等。元组就像字符串, 不可变的。通常包含不同种类的元素并通过分拆(参阅本节后面的内容) 或索引访问(如果是 namedtuples,甚至可以通过属性)。列表是 可变的 ,它们的元素通常是相同类型的并通过迭代访问。

一个特殊的问题是构造包含零个或一个元素的元组:为了适应这种情况,语法上有一些额外的改变。一对空的括号可以创建空元组;要创建一个单元素元组可以在值后面跟一个逗号(在括号中放入一个单值不够明确)。丑陋,但是有效。例如:

>>> empty = ()
>>> singleton = 'hello',    # <-- note trailing comma
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)

语句 t = 12345, 54321, 'hello!' 是 元组封装 (tuple packing)的一个例子:值 12345 , 54321 和 'hello!' 被封装进元组。其逆操作可能是这样:

>>> x, y, z = t

这个调用等号右边可以是任何线性序列,称之为 序列拆封 非常恰当。序列拆封要求左侧的变量数目与序列的元素个数相同。要注意的是可变参数(multiple assignment )其实只是元组封装和序列拆封的一个结合。

上一篇:5.2. del 语句下一篇:5.4. 集合
Python3编程手册
  1. Python 入门指南

  2. 1. 开胃菜

  3. 2. 使用 Python 解释器

  4. 2.1. 调用 Python 解释器

  5. 2.2. 解释器及其环境

  6. 3. Python 简介

  7. 3.1. 将 Python 当做计算器

  8. 3.2. 编程的第一步

  9. 4. 深入 Python 流程控制

  10. 4.1. if 语句

  11. 4.2. for 语句

  12. 4.3. range() 函数

  13. 4.4. break 和 continue 语句

  14. 4.5. pass 语句

  15. 4.6. 定义函数

  16. 4.7. 深入 Python 函数定义

  17. 4.8. 插曲:编码风格

  18. 5. 数据结构

  19. 5.1. 关于列表更多的内容

  20. 5.2. del 语句

  21. 5.3. 元组和序列

  22. 5.4. 集合

  23. 5.5. 字典

  24. 5.6. 循环技巧

  25. 5.7. 深入条件控制

  26. 5.8. 比较序列和其它类型

  27. 6. 模块

  28. 6.1. 深入模块

  29. 6.1.1. 作为脚本来执行模块

  30. 6.1.2. 模块的搜索路径

  31. 6.1.3. “编译的” Python 文件

  32. 6.2. 标准模块

  33. 6.3. dir() 函数

  34. 6.4. 包

  35. 7. 输入和输出

  36. 7.1. 格式化输出

  37. 7.2. 文件读写

  38. 8. 错误和异常

  39. 8.1. 语法错误

  40. 8.2. 异常

  41. 8.3. 异常处理

  42. 8.4. 抛出异常

  43. 8.5. 用户自定义异常

  44. 8.6. 定义清理行为

  45. 8.7. 预定义清理行为

  46. 9. 类

  47. 9.1. 术语相关

  48. 9.2. Python 作用域和命名空间

  49. 9.2.1. 作用域和命名空间示例

  50. 9.3. 初识类

  51. 9.4. 一些说明

  52. 9.5. 继承

  53. 9.6. 私有变量

  54. 9.7. 补充

  55. 9.8. 异常也是类

  56. 9.9. 迭代器

  57. 9.10. 生成器

  58. 9.11. 生成器表达式

  59. 10. Python 标准库概览

  60. 10.1. 操作系统接口

  61. 10.2. 文件通配符

  62. 10.3. 命令行参数

  63. 10.4. 错误输出重定向和程序终止

  64. 10.5. 字符串正则匹配

  65. 10.6. 数学

  66. 10.7. 互联网访问

  67. 10.8. 日期和时间

  68. 10.9. 数据压缩

  69. 10.10. 性能度量

  70. 10.11. 质量控制

  71. 10.12. “瑞士军刀”

  72. 11. 标准库浏览

  73. 11.1. 输出格式

  74. 11.2. 模板

  75. 11.3. 使用二进制数据记录布局

  76. 11.4. 多线程

  77. 11.5. 日志

  78. 11.6. 弱引用

  79. 11.7. 列表工具

  80. 11.8. 十进制浮点数算法

  81. 12. 虚拟环境和包

  82. 12.1. 简介

  83. 12.2. 创建虚拟环境

  84. 12.3. 使用 pip 管理包

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-2-25 05:44 , Processed in 0.018439 second(s), 17 queries .

© 2001-2020

返回顶部