python-元组和序列

Tuples and Sequences(元组和序列)

我们已经知道了list和string有很多共有的特性,就是索引和切片操作。他们是两种序列数据类型,因为python是一门进步的语言,因为另一种标准串数字类型引入了:tuple。

一个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] = 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])

正如你看到的,元组总是通过()来包含,所以嵌套的元组可以正确被理解。他们可能输入有或者没有(),但是虽然很多时候()是必须的,。不可能分配给元组的各个项,但是可以创建包含可变对象(如列表)的元组。

虽然元组看起来根list挺相似的,他们总是用在不同的范围和不同目的。元组是不可变的, 通常包含通过解包访问的异构元素序列,或者索引。list是可变的,他们的元素通常是同构的,而且可以通过list遍历。

一个特别的问题是创造一个元组包含0或1的元素,要完成这么一个数组,语法有点奇怪。空的元组通过()来创建,一个元组创建一个元组,就是(x,)。仅用圆括号括一个值是不够的,

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

语句t = 12345, 54321, 'hello!是元组包装的一个示例:值12345、54321和“hello!”被打包成一个元组。反向操作也是可能的:
这被调用,大概足够了,序列解压缩,适用于右边的任意序列。序列解压缩要求等号左边的变量与序列中的元素一样多。注意,多重赋值实际上只是元组打包和序列拆包的组合。

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
tup3 = tup1 + tup2
print tup3

元组运算符

在这里插入图片描述

内置函数

在这里插入图片描述

cmp(tuple1, tuple2)[3.4后已经废除]

cmp(tuple1, tuple2)
如果比较的元素是同类型的,则比较其值,返回结果。

如果两个元素不是同一种类型,则检查它们是否是数字。

如果是数字,执行必要的数字强制类型转换,然后比较。
如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")
否则,通过类型名字的字母顺序进行比较。
如果有一个列表首先到达末尾,则另一个长一点的列表"大"。

如果我们用尽了两个列表的元素而且所 有元素都是相等的,那么结果就是个平局,就是说返回一个 0

猜你喜欢

转载自blog.csdn.net/xiabenshu/article/details/88867490