zoukankan      html  css  js  c++  java
  • Python序列(Sequence)

     Sequence是Python的一种内置类型(built-in type),内置类型就是构建在Python Interpreter里面的类型,三种基本的Sequence Type是list(表),tuple(定值表,或翻译为元组),range(范围)。可以看作是Python Interpreter定义了这样三个class。

    字符串也是一种序列

    1,list,表

    Python有一系列的复合数据类型,其中最多才多艺的就是list

    class list([iterable])

    list用方括号括起来,并且用逗号分隔,成员的类型可以是不一样的,但一般是一种类型。

    1.1 list object的构建

    >>> list = []
    >>> list = [1,3]
    >>> list
    [1, 3]

    还可以这样构建

    >>> list()   # empty list
    []
    >>> [x for x in range(11)]    # [x for x in iterable]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> list((3,5,6))   #  list(iterable)
    [3, 5, 6]

    1.2,改变list元素值

     list和string不一样的是,string是不可变(immutable)的类型,list是可变的(mutable),可以对list整体或一部分进行改变

    >>> list = [list, 5]
    >>> list
    [[1, 3], 5]
    >>> list[1] = 6
    >>> list
    [[1, 3], 6]

     可以对list进行“切片”slice,得到一个子list,也可以对“切片”进行赋值,改变list

    范围引用的语法是[下限:上限:步长],默认步长是1,从前数下标从0开始,从后数下标从-1开始

    >>> list = [1,2,3,4,5]
    >>> list[2:4]
    [3, 4]
    >>> list[-3:]
    [3, 4, 5]

    对切片进行赋值,改变list

    >>> list
    [1, 2, 3, 4, 5]
    >>> list[3:] = [5,4]
    >>> list
    [1, 2, 3, 5, 4]

    从上面可一看到,对于改变list内容的操作,如赋值,都没有打印结果,也就是表达式返回的None常量。这是Python对可变数据结构(mutable Data Structure)的设计原则。

    2,tuple

    tuple是不可变的(immutable)

    class tuple([iterable])

    tuple的构建

    seq = ()  或  seq = tuple()   #构建empty tuple
    seq = (4,)  或  4,     #构建只有一个元素的tuple (4),逗号是必不可少的,不然会返回数字4
    seq = (3,4,5) 或  seq = 3,4,5
    seq =  tuple([3,4,5])  # 生成 (3,4,5)

    iterable可以是任何支持iteration的Sequence,Container。上面我们使用的参数是list [3,4,5],也可以就是用tuple  (3,4,5)

    对于tuple来说,重要的是逗号",",而不是括号,从上面我们可以看到括号没有歧义可以省去,但是有些地方必须要,比如:

    f(a,b,c)表示这个函数接受三个参数

    而f((a,b,c))表示这个函数接受一个参数,这个参数是一个三元的tuple。

    tuple是不可被赋值的,所以tuple常用来做不同type(异质)的元素的序列集合,而list就常用来做相同type(同质)的元素集合。

    3,range

    range也是一种类型(type),它是一个数字序列(s sequence of numbers),而且是不可变的,通常用在for循环中

    class range(stop)

    class range(start, stop [, step])

    对于第一种构造方式,start默认值为0,step默认值为1

    当step为正时,一个range的元素值为r[i] = start + i * step 且 r[i] < stop; step为负时,r[i] > stop

    >>> range(6)
    [0, 1, 2, 3, 4, 5]
    >>> tuple(range(0,-10,-2))
    (0, -2, -4, -6, -8)
    

    4.多重赋值multiple assignment

    多重赋值就是这样的赋值表达式。

    1 t = a,b,c
    2 a,b,c = t

    而多重赋值本质就是tuple packing (元组打包)和 Sequence unpacking(序列解包)

    >>> t = a, b, c      #这就是tuple packing,按照tuple的构建的语法,我们知道这里t肯定是个tuple。

    >>>a, b, c  = t      #这就是Sequence unpacking,这里t只要是三元的Sequence就可以了,不一定是tuple,如果t不是三元的,会抛出一个ValueError异常。

    6. 要得到一个Sequence的长度

    用Python的内置函数 len(). 不仅Sequence, Dictionary的长度也是用len()

    -----------------

    参考:

    http://www.cnblogs.com/vamei/archive/2012/05/28/2522677.html    Vamei的博客

    http://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range      Python文档,内置类型Sequence

    http://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences     Python文档,tutorial   

  • 相关阅读:
    LSMW TIPS
    Schedule agreement and Delfor
    Running VL10 in the background 13 Oct
    analyse idoc by creation date
    New Journey Prepare
    EDI error
    CBSN NEWS
    Listen and Write 18th Feb 2019
    Microsoft iSCSI Software Target 快照管理
    通过 Microsoft iSCSI Software Target 提供存储服务
  • 原文地址:https://www.cnblogs.com/livingintruth/p/3254654.html
Copyright © 2011-2022 走看看