zoukankan      html  css  js  c++  java
  • FAQ1: 列表索引和切片问题

    问题1. 超过列表成员个数的索引访问列表会出现IndexError错误,但是如果用切片去访问就不会报错,而是返回一个空列表。同样元组也是。

    >>> a=[1,2,3,4]
    >>> a[10]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    >>> a[10:]
    []
    >>> a[10:11]
    []
    >>> a=(1,2,3)
    >>> a[1]
    2
    >>> a[10]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: tuple index out of range
    >>> a[10:]
    ()
    >>> a[10:20]
    ()
    >>> 

    切片操作说明:a[1:3:2] 表示获取索引从1到2的元素(不包括索引为3的元素),并且每两个元素只保留一个。

    >>> a=[1,2,3,4,5,6,7,8,9]
    >>> a[0:10:3]
    [1, 4, 7]
    >>> a[1:3:2]
    [2]
    >>> a[::-1]   #实现列表反转
    [9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>> 

    通过切片获取元素,可以先想象通过给对象中每个元素作标记,
    标记1:  0, 1, 2, 3, 4, 5, 6, 7
          a=[1, 2, 3, 4, 5, 6, 7, 8]
    标记2: -8,-7, -6,-5, -4,-3,-2,-1

    标记之后有3种获取方法,原则只要在两个标记位之间有元素存在就可以获取到,否则返回空列表。
    第一种:通过标记1顺序获取:

    >>> a=[1,  2,  3, 4, 5, 6, 7, 8]
    >>> a[:]
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> a[0:]
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> a[:8]
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> a[0:8]
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> a[2:4]
    [3, 4]
    >>> 

    第二种:通过标记2顺序获取

    >>> a=[1,  2,  3, 4, 5, 6, 7, 8]
    >>> a[-8:]
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> a[-8:-1]
    [1, 2, 3, 4, 5, 6, 7]   #注意a[-8:-1],其中-1索引位置元素是获取不到的。
    >>> a[:-1]
    [1, 2, 3, 4, 5, 6, 7]   #注意a[-8:-1],其中-1索引位置元素是获取不到的。
    >>> a[-6:-2]
    [3, 4, 5, 6]

    第三种:通过混合标记1和2顺序获取:

    >>> a=[1,  2,  3, 4, 5, 6, 7, 8]
    >>> a[-8:0]
    []
    >>> a[-8:1]
    [1]
    >>> a[0:-1]
    [1, 2, 3, 4, 5, 6, 7]
    >>> a[8:-1]
    []
    >>> a[7:-1]
    []
    >>> a[6:-1]
    [7]
  • 相关阅读:
    MT4 图表上设置字符
    MC- 交易并设置止损
    MC- 挂单STOP交易
    MC-设置 止盈
    MC 跨周期 画线
    美版MC 使用
    改变和恢复view的方向
    app被Rejected 的各种原因翻译。这个绝对有用。
    更改navigationController push和pop界面切换动画
    线程访问外部数据
  • 原文地址:https://www.cnblogs.com/lypy/p/6370997.html
Copyright © 2011-2022 走看看