zoukankan      html  css  js  c++  java
  • Python内置数据类型之List篇

    List的定义:

    li = ["one" , "two" , "three" , "four"]

    List是一个有序的集合,这点不同于Dictionary(Dictionary是无序的)。

    (1)索引和切片

    索引有正负之分,正索引下标从0开始,负索引下标从-1开始。比如:

    >>> li[0]
    'one'
    >>> li[3]
    'four'
    >>> li[-1]
    'four'
    >>> li[-4]
    'one'

    通过两个索引得到List的一个子集,我们称之为切片。

    >>> li[-1:-4]
    []
    >>> li[-4:-1]
    ['one', 'two', 'three']

    我们可以看出:1)区间是左闭右开的;

           2)不管两个索引的正负,只需要保证在List中第一个索引是在第二个索引的左边,得到的子集就不会是空的。

    切片的简写,如果缺失第一个索引,那默认是从0开始;如果缺失第二个索引,那默认是直到List的最后一个元素(最后一个元素是算在内的,我们可以认为此时是一个无穷大的值);如果两个索引都缺失,这将包括 list 的所有元素,但是与原始的名为 li 的 List 不同,它是一个新 List,恰好拥有与li一样的全部元素。li[:] 是生成一个 list 完全拷贝的一个简写,就像是copy方法。

    向List添加元素:

    >>> li.append("five");
    >>> li
    ['one', 'two', 'three', 'four', 'five']
    >>> li.insert(3,"six");
    >>> li
    ['one', 'two', 'three', 'six', 'four', 'five']
    >>> li.extend(["seven","eight"]);
    >>> li
    ['one', 'two', 'three', 'six', 'four', 'five', 'seven', 'eight']

    List中的元素值不一定互不相同,可以有相同的。

    >>> li.append(["nine","ten"]);
    >>> li
    ['one', 'two', 'three', 'six', 'four', 'five', 'seven', 'eight', ['nine', 'ten']]

    List 的两个方法 extendappend 看起来类似,但实际上完全不同。extend 接受一个参数,这个参数总是一个 List,并且把这个 List 中的每个元素添加到原 List 中。append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 List 的尾部。

    List的搜索:

    >>> "one" in li
    True
    >>> li.index("one");
    0
    >>> li.index("two");
    1

    如果一个值在List中出现多次,那么index返回的是这个值首次出现的下标。

    List的删除:

    >>> li.remove("one");
    >>> li
    ['two', 'three', 'six', 'four', 'five', 'seven', 'eight', ['nine', 'ten']]
    >>> li.pop();
    ['nine', 'ten']
    >>> li
    ['two', 'three', 'six', 'four', 'five', 'seven', 'eight']

    同样,如果一个值多次出现,remove仅仅是删除首次出现的那个。

    List的运算符:

    >>> li += ["eleven"];
    >>> li
    ['two', 'three', 'six', 'four', 'five', 'seven', 'eight', 'eleven']
    >>> li = [1,2]*3;
    >>> li
    [1, 2, 1, 2, 1, 2]
  • 相关阅读:
    Codeforces 512E
    UOJ #36 -【清华集训2014】玛里苟斯(线性基+暴搜)
    Codeforces 1188E
    洛谷 P7163
    C++ Boost库 操作日期与时间
    C/C++ 搜索缝隙并插入ShellCode
    线性代数学习之正交性,标准正交矩阵和投影
    洛谷 P5851 [USACO19DEC]Greedy Pie Eaters P(区间dp)
    洛谷 [NOIP2009 普及组] 道路游戏(dp)
    洛谷 P2890 [USACO07OPEN]Cheapest Palindrome G(区间dp)
  • 原文地址:https://www.cnblogs.com/RainingDays/p/3503891.html
Copyright © 2011-2022 走看看