zoukankan      html  css  js  c++  java
  • python教程(四)·序列

    距离上次的小项目已经休息了很长一段时间,是时候来继续本系列教程了。这一节开始我们将深入python中的数据结构。

    序列的概念

    在python中,最基本的数据结构是序列,序列包含一个或多个元素,每个元素有一个序号,也就是元素的位置,也称为索引。第一个索引是0,第二个是1,以此类推。

    说到这里,可能大家都想到了列表。确实,python中有好几种内建(自带)的序列,列表就是其中一种,当然,元组也是。其他的内建序列类型有字符串、字节串等。

    至于字符串,它其实就是一个由许多字符组成的序列,索引0指向第一个字符,索引1指向第二个字符……

    本系列教程主要学习列表元组字符串这三种序列,字节串不详细讨论。

    通用序列操作

    所有的序列类型都有一些共同的操作,这些操作包括:索引分片加法乘法还有检查某个元素是否包含在序列中。除此以外,python中还有一系列针对序列的内建函数。

    索引

    索引操作其实就是通过索引访问元素的操作,十分简单,况且之前也有提过,在这里直接给出例子:

    >>> s = 'hello'
    >>> s[0]  # 正向索引
    'h'
    >>> s[-1]  # 反向索引
    'o'
    >>> 
    

    要注意的是,反向索引时,末尾元素的索引应该是-1,而不是-0,因为-0就是0,不然就与首元素索引重合了。

    分片

    索引只可以访问一个元素,而分片可以访问一定区间(范围)内的元素。分片通过冒号隔开的两个索引来实现,前一个索引表示起点(包括起点),后一个索引包括终点(不包括终点):

    >>> s = 'hello world'
    >>> s[0:5]
    'hello'
    >>> lst = [1, 2, 3, 4, 5]
    >>> lst[1:-1]
    [2, 3, 4]
    

    省略第一个索引表示从首元素开始:

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

    省略第二个索引表示索引的范围包含起点以及起点之后的所有元素:

    >>> lst = [1, 2, 3, 4, 5]
    >>> lst[1:]
    [2, 3, 4, 5]
    >>> lst[:]  # 两个索引都省略
    [1, 2, 3, 4, 5]
    

    要注意的是,下面两种分片并不等价:

    >>> lst[1:]
    [2, 3, 4, 5]
    >>> lst[1:-1]
    [2, 3, 4]
    

    注意:分片操作返回的序列是从原序列复制指定的范围内的元素而生成的,在新的序列中给元素重新赋值,并不影响原序列。

    我们还可以再指定一个数字来表示步长,具体看下面例子:

    >>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> lst[0:10:2]
    [1, 3, 5, 7, 9]
    

    上面的例子中,从索引0开始,每2个元素就取一个元素,这个2就是我所说的步长,在之前的例子中,我们的没有提供步长,这时的步长默认就是1。

    当然,步长不可以为0,步长为0将会报错。但是步长可以是负数!,这时分片从右往左提取元素:

    >>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> lst[3:1:-1]
    [4, 3]
    

    上面例子中,分片从索引4的元素开始,每一步取一个元素,直到索引1(不包括该元素)。

    使用负数的步长常常会使人困惑,建议如无必要,还是不要使用负数的步长。

    加法

    通过使用加法运算符+,我们可以进行序列的连接操作:

    >>> [1,2,3] + [4,5,6]
    [1, 2, 3, 4, 5, 6]
    >>> 'hello' + 'world'
    'helloworld'
    >>> (1,2) + (3,4)
    (1, 2, 3, 4)
    

    这十分简单,不过要注意,只有在相同类型的序列之间,才可以进行相加,不然就报错:

    >>> [1,2,3] + 'hello'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: can only concatenate list (not "str") to list
    

    乘法

    我们把一个序列与整数n相乘来生成一个新的序列,这个新的序列将被重复n次:

    >>> [1,2,3] * 5
    [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
    >>> 'hello ' * 3
    'hello hello hello '
    

    成员资格

    我们把确认一个值是否在序列中,称为检查这个值在序列中的成员资格。我们可以用运算符in来实现:

    >>> lst = [1, 2, 3, 4]
    >>> 1 in lst
    True
    >>> 0 in lst
    False
    

    字符串比较特殊,我们不仅可以检查某个字符是否在一个字符串中,而且可以检查某个另一个字符串是否在该字符串中:

    >>> s = 'hello world'
    >>> 'w' in s
    True
    >>> 'world' in s
    True
    

    操作序列的函数

    除了上面的序列操作外,python还提供了一些内建函数用于操作序列,下面介绍最常用的len、min、max函数。

    使用len函数可以得到序列的长度,也就是序列中元素的数量:

    >>> lst = [1,2,3]
    >>> len(lst)
    3
    >>> s = 'hello'
    >>> len(s)
    5
    

    min和max函数分别返回序列中的最小和最大的元素:

    >>> lst = [1,2,3,4,5]
    >>> min(lst)
    1
    >>> max('hello world')
    'w'
    

    min和max函数的参数还可以是多个参数:

    >>> max(3,2,4,2,5)
    5
    >>> min(3,2,4,2,5)
    2
    

    这个时候相当于全部参数被收集成一个列表,再从中求出最大或最小的元素


    本节到此为止,读者们好好消化,我们下期再见!

  • 相关阅读:
    香港增补字符集(HKSCS) 背景介绍
    Java是剑客飘逸;.NET是刀客霸道 (二)
    sql server中扩展存储过程
    《Windows Communication Foundation之旅》系列之三
    《WCF之旅》系列
    男性英文名字汉语意思大全
    AJAX基础教程
    《Windows Communication Foundation之旅》系列之四
    《Windows Communication Foundation之旅》系列之一
    XSL进阶教程
  • 原文地址:https://www.cnblogs.com/featherl/p/10388568.html
Copyright © 2011-2022 走看看