python6:序列之元组和range

元组是不可变序列,通常用于存储异构数据的集合。range也是不可变序列,但只用于数字,通常用于for循环中。

构造元组

构造元组有以下方法: 1)用一对括号表示一个空元组:(); 2)在单个元素后跟逗号表示单个元素的元组:a,或者(a,); 3)用逗号分隔的多个元素:a,b,c或者(a,b,c); 4)用tuple()或者tuple(iterable)构造元组。tuple()创建一个空的元组;tuple(iterable)构造的元组和iterable具有相同的元素顺序,iterable可以是一个序列,一个支持迭代的容器,或者iterator对象,如果iterable已经是一个元组,则直接返回,看下面的例子:

>>> tuple('abc')('a', 'b', 'c')>>> tuple([1,2,3])(1, 2, 3)需要注意的是,构造元组真正需要的是逗号,而不是圆括号(例如一个元素的元组必须在后面带一个逗号),圆括号是可选的,除了空的元组或者为了避免语义冲突,例如,f(a,b,c)是3个参数的函数,而f((a,b,c))则是传入一个参数为元组的函数。

元组方法

元组实现了所有序列的公共方法。需要注意元组的分片还是元组:

>>> a = 1,2,3>>> a[0:2](1, 2)>>> a[2]3元组可以用于给变量批量赋值

>>> a = 1,2,3>>> c,d,e = a>>> c1>>> d2>>> e3

range

range是一个不可变的整数序列: class range(stop); class range(start,stop[,step])。range的参数必须是整数,start默认为0,step默认为1,如果指定step为0,则抛出一个ValueError异常。step为正时,range的值由这个公式决定:r[i] = start + step*i,而i >= 0并且r[i] < stop。step为负时,range的值任然由该公式决定:r[i] = start + step*i,但是约束为i >= 0和r[i] > stop。看下面的例子:

>>> list(range(10))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> list(range(1, 11))[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> list(range(0, 30, 5))[0, 5, 10, 15, 20, 25]>>> list(range(0, -10, -1))[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]>>> list(range(0))[]>>> list(range(1, 0))[]range实现了序列的公共方法,如下:

>>> r = range(1,20,2)>>> rrange(1, 20, 2)>>> 11 in rTrue>>> 12 in rFalse>>> r.index(9)4>>> r[5]11>>> r[:5]range(1, 11, 2)>>> r[-1]19range更多的是用在for循环中,在后面讲循环的时候在具体阐述。

range的好处

ange相对于list和元组的好处在于占用内存固定,,且较小,它仅存储start、stop和step值,在需要时计算每个条目的值。

就得加倍付出汗水,赢得场场精彩

python6:序列之元组和range

相关文章:

你感兴趣的文章:

标签云: