• 序列


    Python中的数据类型很多,主要有简单数据类型(基本数据类型)和结构数据类型(复合数据类型)。

    结构数据是一组数据元素(结点)按照一定方式构成的复合数据形式。

    Python中常见的复合数据类型有序列类型,集合类型,映射类型。序列类型包含str(字符串,字符序列)、list(列表)、tuple(元组)。集合类型包括set(集合)、 frozenset。映射类型主要为dict(字典)。

    1、序列类型

            序列表示索引为非负整数的有序对象集合,包括字符串、列表和元组。字符串为字符的序列,列表与元组则是任意数据类型或对象的的序列。元组是不可变的,字符串也是不可变的(修改字符串就是重新创建一个字符串)

    (1)序列切片

            对于任何一个序列,它们的元素都是有序的,都可以使用序号来获取每一项成员的值,另一方面python中序列的序号既可以从左向右从0开始计数,又可以从右向左从-1开始计数。因此以序号来取序列成员的话,同一成员可以有两个序号取法。

      >>> s = 'python'

      >>> s[1]

      'y'

      >>> s[-5]

      'y'

      >>> l = [2,5,3,7,9,6]

      >>> l[3]

      7

      >>> l[-3]

      7

    序列的切片是指用形如[start:end:step]来取序列中的部分成员数据项。常用的方法如下(设alst = [2,5,3,7,9,6]):

      alst[:]        取全部的成员数据项

      alst[0:]        取全部的成员数据项

      alst[:-1]        取除最后一个之外的成员数据项

      alst[2:4]        取序号为[2,4)的成员数据项

      alst[::2]        从第一个开始,每隔一个取一个成员,得到[2,3,9]

      alst[1:6:2]       从第2个到第5个([1,6)),每隔一个取

      alst[::-1]       从右向左取全部成员,得到[6,9,7,3,5,2]

      alst[::-2]          从右向左取成员,每隔一个取一个,得到[6,7,5]

      alst[5:0:-2]      (0,5]从右向左取,每隔一个取一个,得到[6,7,5]

    实例代码如下:

      

        >>> alst = [2,5,3,7,9,6]
    
      >>> alst[:]
    
      [2, 5, 3, 7, 9, 6]
    
      >>> alst[0:]
    
      [2, 5, 3, 7, 9, 6]
    
      >>> alst[:-1]
    
      [2, 5, 3, 7, 9]
    
      >>> alst[2:4]
    
      [3, 7]
    
      >>> alst[::2]
    
      [2, 3, 9]
    
      >>> alst[1:6:2]
    
      [5, 7, 6]
    
      >>> alst[::-1]
    
      [6, 9, 7, 3, 5, 2]
    
      >>> alst[::-2]
    
      [6, 7, 5]
    
      >>> alst[5:0:-2]
    
      [6, 7, 5]    

    (2)序列类型操作符

    连接操作符:连接操作符’ + ‘,可以将若干个同类型的序列对象连接到一起。

      >>> s = 'python'

      >>> s1 = 'ajdfls'

      >>> s + s1

      'pythonajdfls'

    重复运算符:重复运算符’ * ‘,能够让被操作数重复的n次,并生成一个新的同类型序列。

      >>> s * 2

      'pythonpython'

      >>> l = [2,3,6,4]

      >>> l*2

      [2, 3, 6, 4, 2, 3, 6, 4]

    成员运算符:成员运算符(in/not in)能够判断一个指定对象是否是作为一个容器中的元素,由此来判断两个对象间的关系。 

      >>> 'th' in s

      True

      >>> 'thn' in s

      False

      >>> 2 in l

      True

      >>> 4 not in l

      False

    (3)序列内置操作

    在Python中内置了一些对序列进行操作的方法,如下所示:

      len(s)          返回s的元素数(长度)

      min(s)          返回s中的最小值

      max(s)          返回s中的最大值

      sum(s[,start])          返回s中各项的和

      all(s)          s中所有元素为真,则返回为真,否则返回为假

      any(s)          s中有一项元素为真,则返回为真,否则返回为假

      enumerate(s)     枚举,用于遍历序列中的元素以及它们的下标

      reversed(s)   接受一个序列作为参数,返回一个以逆序访问的迭代器

      sorted(s)    接受一个可迭代对象作为参数,返回一个有序的列表

      zip(iter0,iter1)   返回为元组组成的列表, 它接受一系列可迭代的对象作为参数,将对象中对应的元素按顺序组合成一个tuple,每个tuple中包含的是原有序列中对应序号位置的元素,然后返回由这些tuples组成的list。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。

    实例如下:

      

    >>> s = 'python'
    
      >>> len(s)
    
      6
    
      >>> min(s)
    
      'h'
    
      >>> max(s)
    
      'y'
    
      >>> sum(s)
    
      Traceback (most recent call last):
    
        File "<pyshell#36>", line 1, in <module>
    
          sum(s)
    
      TypeError: unsupported operand type(s) for +: 'int' and 'str'
    
      >>> all(s)
    
      True
    
      >>> any(s)
    
      True
    
      >>> l = [2,5,3,7]
    
      >>> sum(l)
    
      17
    
      >>> sum(l[2:])
    
      10
    
      >>> s = 'python'
    
      >>> enumerate(s)
    
      <enumerate object at 0x0000000003414E58>
    
      >>> for i in enumerate(s):
    
        print(i)
    
      (0, 'p')
    
      (1, 'y')
    
      (2, 't')
    
      (3, 'h')
    
      (4, 'o')
    
      (5, 'n')
    
      >>> l = [2,5,3,7]
    
      >>> for i,j in enumerate(l):
    
        print(i,j)
    
      0 2
    
      1 5
    
      2 3
    
      3 7
    
      >>> reversed(s)
    
      <reversed object at 0x00000000034125C0>
    
      >>> for i in reversed(s):
    
        print(i)
    
      n
    
      o
    
      h
    
      t
    
      y
    
      p
    
      >>> sorted(s)
    
      ['h', 'n', 'o', 'p', 't', 'y']
    
      >>> l = [2,5,3,7]
    
      >>> sorted(l)
    
      [2, 3, 5, 7]
    
      >>> t = (2,5,3,7)
    
      >>> sorted(t)
    
      [2, 3, 5, 7]
    
      >>> zip(s,l)
    
      <zip object at 0x0000000003691488>
    
      >>> for i in zip(s,l):
    
        print(i)
    
      ('p', 2)
    
      ('y', 5)
    
      ('t', 3)
    
      ('h', 7)
    View Code
  • 相关阅读:
    第一周作业
    模拟赛3 题解
    模拟赛2 题解
    [HNOI2008]GT考试 题解
    NOI Online 提高组 题解
    模拟赛1 题解
    知识点拾遗
    [NOIp2012]疫情控制 题解
    [CEOI2002]Bugs Integrated, Inc. 题解
    [NOIp2017]宝藏 题解
  • 原文地址:https://www.cnblogs.com/kuenen/p/5962992.html
Copyright © 2020-2023  润新知