zoukankan      html  css  js  c++  java
  • python学习笔记20:序列

    列表、元组、字符串都是序列,序列有两个主要操作:索引、切片。

    1. 索引操作(抓取一个元素):

    >>> shop_list[n]# 取第n个元素
    >>> shop_list[-1] # 取最后一个元素
    >>> shop_list[-2] # 取倒数第二个元素
    

    2 list切片操作(抓取多个元素)

    2.1 语法

    a=[0, 1, 2, 3, 4]
    a[i:j:k]

    2.2 参数

    切片参数 说明 默认值(k>0) 默认值(k<0)
    i 起始位置 0 -1
    j 结束位置 len(a) -1-len(a)
    k 步长 1 1

    正负索引值的关系:如果一个元素的正索引为idx,则该元素对应的负索引值idxr = idx-len(a)

    正/负序号索引值(idxr=idx-len(a))
    正值idx012...len(a)-3len(a)-2len(a)-1
    负值idxr0-len(a)1-len(a)2-len(a)...-3-2-1

    以a=[0, 1, 2, 3, 4]为例说明:

    1. 结束位置j不包含在返回在的list中,
      a[1:2]只包含一个元素a[1],
      a[1:1]返回空数组[];
    2. j和k都可以省略,但i和j中间的冒号不能省略,
    3. j和k中间的冒号(在k不声明时)可以省略。
    4. list的idx值不能超出list的索引范围,比如a[5]会报告list idx out of range;
    5. i可以超出索引范围,返回空数组;比如a[5:],a[-6::-1];
    6. j可以超出索引范围,超出的范围不做处理;比如a[3:6]返回[3,4],a[-2:6]返回[3,4](a[-2]即a[3]);
    7. j可以超出i的范围(k>0时,j<i,或k<0时,j>i),返回值为空数组[];比如a[3:1],a[-2:-4],a[-4,-2,-1];

    2.3 取元素操作

    (以a=[0, 1, 2, 3, 4]为例)

    >>> a[1:4]      # [1, 2, 3],第1到第3个元素,不包含第4个元素;  
    >>> a[2:]       # [2, 3, 4],第2到最后一个元素;  
    >>> a[2:len(a)] # [2, 3, 4],同a[2:];  
    >>> a[2:-1]     # [2, 3],   第2到倒数第2个元素,注意不包含a[-1];  
    >>> a[:3:2]     # [0, 2],   第0~2个元素,每两个元素取一个。  
    >>> a[:]        # [0, 1, 2, 3, 4],所有元素;  
    >>> a[::2]      # [0, 2, 4],      所有元素,每两个元素取一个;  
    >>> a[::-1]     # [4, 3, 2, 1, 0],逆序list;  
    >>> for e in a[::-1]: # 通过将k置为-1,逆序操作list;  
    ...     print(e)  
    

    2.4 替换/删除元素操作

    (a=[0, 1, 2, 3, 4]为例)

    1. 替换元素(k==1时):
    >>> a[0:2] = [‘a’, ‘b’, ‘c’]  
    >>> a  
    [‘a’, ‘b’, ‘c’, 2, 3, 4]  
    

    说明:将第0~1个元素替换为[‘a’, ‘b’, ‘c’], 注意:k=1时,切片元素数目和替换元素数目可以不相等。

    1. 删除元素(k==1时):
    >>> a[0:2] = []  
    >>> a  
    [2, 3, 4]  
    

    说明:删除第0~1个元素;也可以写成a[0:2] = ‘’或a[0:2]={}, 但不能写成a[0:2]=None,会报告TypeError;

    1. 替换元素(k!=1时,包括k==-1的情况):
    >>> a[0::2] = [‘a’, ‘b’, ‘c’]  
    >>> a  
    [‘a’, 1, ‘b’, 3, ‘c’]  
    

    说明:将第0,2,4个元素替换为[‘a’, ‘b’, ‘c’] 注意,k!=1时,如果切片元素数和替换元素数不相等会报错。

    >>> a[0::2] = [] # k!=1,切片元素数与替换元素数不相等,报错;  
    ValueError: attempt to assign sequence of size 0 to extended slice of size 3
    >>> 
    >>> a[-4:-6:-1] = [‘a’, ‘b’, ‘c’] # 报错,k==-1时也要求替换数目相等  
    ValueError: attempt to assign sequence of size 3 to extended slice of size 2
    

    说明:即使k=-1,切片元素数和替换元素数不相等也会报错;

    1. 反向替换(k==1 或 k==-1时):
    >>> a[-3:-6:-1] = ['a', 'b', 'c']  
    >>> a  
    ['c', 'b', 'a', 3, 4,]  
    

    说明:将第2~0(-3, -4, -5)个元素替换为['a', 'b', 'c'],反映到a中,'a''b''c'出现的次序会反向;

    5.反向替换(k!=1时):

    >>> a[::-2] = ['a', 'b', 'c']  
    ['c', 1, 'b', 3, 'a']  
    

    说明:第0, 2, 4 (-1,-3,-5)个元素替换为['a', 'b', 'c']

    3. str切片操作

    >>> name = ‘swaroop’  
    >>> name[1:3]  # ‘wa’  
    >>> name[2]    # ‘a’  
    >>> name[1:-1] # ‘waroo’, 不包括最后一个元素‘p’  
    >>> name[:]    # ‘swaroop’  
    
  • 相关阅读:
    Python 3.8六大新功能
    不小心删除/etc/passwd文件怎么办
    python干货三例(需基础) ​​​​
    程序员喜爱的七款热门Linux系统介绍(附下载地址)
    零代码时代即将到来?没那么简单
    来说说成功的云迁移的10个经验教训
    日本已开始提供10Gbps万兆光纤接入服务
    微软:将向安卓和苹果iOS平台推出杀毒软件Defender
    有jQuery背景,该如何用AngularJS编程思想?
    自用迷你版的Deferred
  • 原文地址:https://www.cnblogs.com/gaiqingfeng/p/13254179.html
Copyright © 2011-2022 走看看