5.3. Tuples and Sequences(元组和序列)
来源:互联网 发布:holy cross学院知乎 编辑:程序博客网 时间:2024/06/11 08:16
我们发现列表(list)跟字符串(str)有很多相似的地方,比方说爱吃下标访问和分片操作。事实上这两种数据类型是7种序列数据类型(包括str,unicode,list,tuple,bytearray,buffer,xrnage)中的两种。因为Python是一门在不断完善的语言,以后也可能加入新的序列类型。本节介绍一种新的序列类型,tuple(元组)。
用逗号分隔的一些值就是元组,例如:
>>> 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] = 88888Traceback (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])
如聪明的你所见,输出的元组类型总是在一对圆括号里。而在输入的时候圆括号可以省略,事实上输入时的圆括号还是很有必要的(例如元组是一个更大表达式的一部分)。元组一旦创建,其内容不可修改,元组支持复杂的嵌套,像序列那样。
即使元组看起来跟列表很像,但他们经常用于不同的场合和不同的目的。元组不可改变,且包含的元素通常是不同类型的,经常用于序列解包(在后面章节会讲到),访问元素常用下标访问。而列表是可变的,其中的元素类型大多相同,且经常通过迭代元素访问。
特殊的情况是元组中只有1个或者没有元素:我们要用一些看起来有些奇怪的语法来做到这些。用一对圆括号来创建一个空元组;用一对圆括号中加一个元素和一个逗号来创建只含一个元素的元组(不能省略那个逗号)。看起来有些丑,但是有效。例如:
>>> empty = ()>>> singleton = 'hello', # <-- note trailing comma>>> len(empty)0>>> len(singleton)1>>> singleton('hello',)
t = 12345, 54321, 'hello' 语句是一个元组打包的例子:12345, 54321, 'hello'这些值被打包进了一个元组。相反的操作也是可以的:
>>> x, y, z = t这种操作叫序列解包,等号右边可以是任何序列类型。序列解包左边变量的个数和右边序列中的元素个数相同。复杂的赋值操作只是元组的打包和序列解包而已。
译者小结:
元组中的元素不可变,序列中的元素可变。
0 0
- 5.3. Tuples and Sequences(元组和序列)
- 元组(tuples)
- Glib学习(10) 关系和元组 Relations and Tuples
- Python[六]:Tuples and Sequences
- Swift - 元组详解(Tuples)
- swift学习记录(元组tuples)
- 1.6 Swift元组(tuples)
- [C#7] 1.Tuples(元组)
- swift tuples 元组
- [Swift]元组-Tuples
- Swift 元组(tuples)
- Swift 元组(Tuples)介绍
- Swift 元组(Tuples)介绍
- Swift 中的元组 (Tuples)
- Swift学习之六:元组(Tuples)
- Swift学习之六:元组(Tuples)
- Swift学习之六:元组(Tuples)
- Swift学习之六:元组(Tuples)
- WatchKit 之 数据共享
- JSP标签JSTL(2)--流程控制
- 技嘉主板常见问题解答
- HDU 2844 Coins (多重背包)
- Material Design Guide
- 5.3. Tuples and Sequences(元组和序列)
- 信号发送函数sigqueue和信号安装函数sigaction
- iOS使用NSUserDefaults保存用户名和密码
- Spring事务隔离级别介绍
- 列表优化
- SVN 405错误
- Synopsys发布Coverity 8.0-重量级的研发质量与安全解决方案!
- 2016年对我之前的IT生涯做个总结
- iOS cell排序