当前位置:编程学堂 > python6:序列之元组和range

python6:序列之元组和range

  • 发布:2023-09-09 17:38

元组是不可变序列,通常用于存储异构数据的集合。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

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]
19
range更多的是用在for循环中,在后面讲循环的时候在具体阐述。

range的好处

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

相关文章

最新资讯

热门推荐