zoukankan      html  css  js  c++  java
  • python基础教程_学习笔记1:序列-1

    序列

    数据结构:通过某种方式组织在一起的数据元素的集合,这些数据元素能够是数字或者字符,甚至能够是其它数据结构。


    python中,最主要的数据结构是序列

    序列中的每一个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是0,第二个是1,以此类推。

    序列概览

    python包括6种内建的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。

    列表和元组的主要差别在于,列表能够改动,元组不能。

    使用后者的理由一般是技术性的,它与python内部的运作方式有关。这也是内建函数可能返回元组的原因。

    一般来说,在差点儿全部的情况下,列表都能够取代元组。当中一种须要注意到例外情况:使用元组作为字典的键。在这样的情况下,由于键不可改动,所以不能使用列表。

    通用序列操作

    全部序列类型都能够进行某些特定的操作。这些操作包含:索引、分片、加、乘以及检查某个元素是否属于序列的成员(成员资格)。除此之外,python还有计算序列长度、找出最大元素和最小元素的内建函数。

    注:另外一个重要的操作:迭代,兴许会接触到。

    索引

    序列中的全部元素都是编号的——从0開始递增。这些元素能够通过编号分别訪问。使用负数索引时,python会从右边,也就是最后一个元素開始计数。最后1个元素的位置编号是-1(记住:不是0)

    字符串

    >>> greeting = 'hello'

    >>> greeting[0]

    'h'

    >>> greeting[-1]

    'o'

    >>> greeting[1]

    'e'

    >>> greeting[-2]

    'l'

    字符串字面值也能够使用索引。

    >>> 'hello'[-1]

    'o'

    >>> 'hello'[-2]

    'l'

    列表

    >>>greeting=['hello','world','you','and','i']

    >>> greeting[0]

    'hello'

    >>> greeting[-1]

    'i'

    元组

    >>>greeting=('hello','world','you','i')

    >>> greeting[0]

    'hello'

    >>> greeting[-2]

    'you'

    假设一个函数调用返回一个序列,能够直接对返回结果进行索引操作。

    >>>forth_num=raw_input("Please input a num(lenght>4): ")[3]

    Please input a num(lenght>4): 20140508

    >>> forth_num

    '4'

    分片

    使用分片操作能够訪问一定范围内的元素,通过冒号相隔的两个索引来实现。

    字符串

    >>> greeting = 'Hello,world!'

    >>> greeting[0:3]

    'Hel'

    列表

    >>> greeting=['hello','world','you','and','i']

    >>> greeting[1:3]

    ['world', 'you']

    元组

    >>>greeting=('hello','world','you','i')

    >>> greeting[0:3]

    ('hello', 'world', 'you')

    可知,分片中第一个索引是须要提取部分的第一个元素的编号,第二个索引是分片之后剩下部分的第1个元素的编号。简言之,分片操作的实现须要提供两个索引作为边界,第一个索引是包括在分片内的,第2个则不包括在分片内。

    优雅的捷径

    假设须要訪问序列的最后几个元素呢?当然能够显式的操作:

    >>> greeting=['hello','world','you','and','i']

    >>> greeting[1:5]

    ['world', 'you', 'and', 'i']

    索引5指向的元素并不存在,这样的方法当然是可行的。但假设须要从列表的结尾開始计数呢?

    >>> greeting[-4:-1]

    ['world', 'you', 'and']

    >>> greeting[-4:0]

    []

    这并非我们想要的结果。

    实际上,仅仅要分片最左边的索引比右边的晚出如今序列中,结果就是一个空序列。能够使用捷径:假设分片所得部分包括序列结尾的元素,置空最后一个索引就可以

    >>> greeting[-4:]

    ['world', 'you', 'and', 'i']

    相同能够用于序列開始的元素:

    >>> greeting[:3]

    ['hello', 'world', 'you']

    同理,想要复制整个序列,能够将两个索引置空(冒号不能省略):

    >>> greeting[:]

    ['hello', 'world', 'you', 'and', 'i']

    更大的步长

    进行分片,分片的開始和结束点须要进行指定,另外一个參数——步长——一般是隐式设置的。在普通的分片中,步长是1——分片操作就是依照这个步长逐个遍历序列的元素,然后返回開始和结束点之间的全部元素。

    >>> numbers=[1,2,3,4,5,6,7,8,9,10]

    >>> numbers[0:10:2]

    [1, 3, 5, 7, 9]

    捷径在这里依旧适用。将每4个元素中的第一个提取出来:

    >>> numbers[::4]

    [1, 5, 9]

    步长不能为0,由于无法向下进行:

    >>> numbers[::0]

    Traceback (most recent call last):

     File "<pyshell#49>", line 1, in <module>

       numbers[::0]

    ValueError: slice step cannot be zero

    步长能够是负数,即从右到左提取元素:

    >>> numbers[8:3:-1]

    [9, 8, 7, 6, 5]

    >>> numbers[::-2]

    [10, 8, 6, 4, 2]

    >>> numbers[:5:-2]

    [10, 8]

    >>> numbers[5::-2]

    [6, 4, 2]

    >>> numbers[3:8:-1]

    []

    记住:分片最左边的索引比右边的晚出如今序列中,结果就是一个空序列。

    当使用一个负数作为步长时,必须让開始点大于结束点。在没有明白指定開始点和结束点的时候,正负数的使用可能会带来一些混淆。

    总之,对于一个正数步长,python会从序列的头部開始向右提前元素,直至最后一个元素;

    对于负数步长,从序列的尾部開始向左提取元素,直到第一个元素。

  • 相关阅读:
    超经典~超全的jQuery插件大全
    如何用PHP做到页面注册审核
    php实现签到功能
    php中的实用分页类
    微信小程序,超能装的实例教程
    php之 常用的 流程管理
    php之 人员的权限管理(RBAC)
    php之简单的文件管理(基本功能)
    php最新学习-----文件的操作
    关于LAMP的配置之(虚拟机的安装、创建、配置)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4304410.html
Copyright © 2011-2022 走看看