标签:python
元组是不可变序列,通常用于存储异构数据的集合。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 >>> c 1 >>> d 2 >>> e 3
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) >>> r range(1, 20, 2) >>> 11 in r True >>> 12 in r False >>> r.index(9) 4 >>> r[5] 11 >>> r[:5] range(1, 11, 2) >>> r[-1] 19range更多的是用在for循环中,在后面讲循环的时候在具体阐述。
ange相对于list和元组的好处在于占用内存固定,且较小,它仅存储start、stop和step值,在需要时计算每个条目的值。
标签:python
原文地址:http://blog.csdn.net/tomato__/article/details/44808995