第九章:元组
9.1易变性和元组
目前为止,我们接触了两种复合类型:由字符组成的字符串,以及由多重数据类型组成的列表,两者的区别在于列表中的元素可以变,而字符串中的字符不能变,换句话来说就是列表可变,字符串不可变。
python中有另外一种类型和list类似,但是其不可变,这种类型称之为tuple,语法上tuple是一串逗号分隔的值列表
>>> tuple = 'a', 'b', 'c', 'd', 'e'
我们也可以将tuple值用括号包起来,创建只包含一个元素的tuple必须加上最后一个逗号,否则会当成是一个字符串。
>>> t1 = ('a',)
除了语法之外,元祖的操作同列表的操作完全一样,通过下标从元祖获取元素
>>> tuple = ('a', 'b', 'c', 'd', 'e')
>>> tuple[0]
'a'
分片操作获取元祖中的部分值
>>> tuple[1:3]
('b', 'c')
但是如果我们尝试改变元祖中的某个值,会抛出一个错误
>>> tuple[0] = 'A'
TypeError: object doesn't support item assignment
虽然我们不能改变元祖的元素,但是我们可以新建一个元祖替换
>>> tuple = ('A',) + tuple[1:]
>>> tuple
('A', 'b', 'c', 'd', 'e')
9.2元祖赋值
有时,我们需要交换两个变量的值,我们通过一个临时变量进行交换:
>>> temp = a
>>> a = b
>>> b = temp
但是如果程序中有大量类似的代码会显得臃肿,python提供了一个元组操作为这种操作提供了便捷的方式
>>> a, b = b, a
左边是元组变量,右边是元组的值,每个值都被分配给对应的变量,游标的表达式在赋值开始之前都会被计算出值
这种特性为元组的赋值提供了非常大的便利性。左边的变量数目必须和右边值得数目相同。
9.3将元组作为返回值
函数可以将元组作为返回值返回,例如:下面函数交换两个参数
def swap(x, y):
return y, x
我们可以把返回值赋值给两个变量:
a, b = swap(a, b)
9.4随机数
大部分的计算机对于同一种情况只能进行同一种操作,因此被称之为是确定性的,确定通常是一件好事情,我们期望相同的条件下每次计算的结果都相同,对于某些情况,我们却需要计算机表现出一定的不确定性,游戏就是一个显著的例子,除此之外还有很多情况。
要使一个程序变得完全不确定性并不容易,但是让其看起来不确定却不难,python提供了内置的函数产生随机数,在数学的中,这些数字并不是随机的,但是我们可以认为其是随机的。
random模块中包含函数random返回一个0.0到1.0之间的随机数,每次调用random方法都会得到一个伪随机数
import random
for i in range(10):
x = random.random()
print x
如果需要产生一个更大边界的随机数,我们可以用随机数乘以这个边界值