zoukankan      html  css  js  c++  java
  • 006 列表的常用方法

    查看

    • dir(list): 列出 list 的方法
    • help(list): 查看开发者对 list 方法所编写的详细描述文档
      • help(list.append) 可以仅查看 append() 的用法

    append()

    >>> a = [0, 1, 2, 3]
    >>> a.append(4)
    >>> a
    [0, 1, 2, 3, 4]
    >>> a.append(5, 6)
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        a.append(5, 6)
    TypeError: append() takes exactly one argument (2 given)
    >>> 
    

    说明

    • 在原列表的基础上直接操作
    • append() 会返回一个 None
    • append() 仅能在列表末尾追加一个数据,多加报错

    extend()

    >>> a = [0, 1, 2, 3]
    >>> a.extend(4)
    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        a.extend(4)
    TypeError: 'int' object is not iterable
    >>> a.extend([4])
    >>> a
    [0, 1, 2, 3, 4]
    >>> a.extend([5, 6])
    >>> a
    [0, 1, 2, 3, 4, 5, 6]
    >>> a.extend("york")
    [0, 1, 2, 3, 4, 5, 6, 'y', 'o', 'r', 'k']
    >>> 
    

    说明

    • 在原列表的基础上直接操作
    • extend() 是向列表追加一个可迭代的数据

    insert()

    >>> a = [0, 1, 2, 3]
    >>> a.insert(3, "York")
    >>> a
    [0, 1, 2, 'York', 3]
    >>> a.insert(10, "Fish")  # 索引超标,当作 append()
    >>> a
    [0, 1, 2, 'York', 3, 'Fish']
    >>> 
    

    说明

    • 在原列表的基础上直接操作
    • insert() 与插队一个效果,就是把目标值插到目标索引
    index: 0 1 2  3 4
    num:   9 8 7  5 4    a.insert(3, 66)
                /       => 9 8 7 66 5 4
                66
    

    pop()

    >>> a = [0, 1, 2, 3]
    >>> a.pop()  # 弹末尾
    3
    >>> a
    [0, 1, 2]
    >>> a.pop(0)  # 按索引弹
    0
    >>> a
    [1, 2]
    >>> a.pop(10)  # 索引超标,抛出异常
    Traceback (most recent call last):
      File "<pyshell#5>", line 1, in <module>
        a.pop(10)
    IndexError: pop index out of range
    >>> 
    

    说明

    • 在原列表的基础上直接操作

    remove()

    >>> a = [1, 2, 3, 2, 1]
    >>> a.remove(2)
    >>> a
    [1, 3, 2, 1]
    >>> a.remove(10)
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        a.remove(10)
    ValueError: list.remove(x): x not in list
    >>> 
    

    说明

    • 在原列表的基础上直接操作
    • 从头遍历,移除第一个
    • 没有找到,抛出异常

    clear()

    >>> a = [0, 1, 2, 3]
    >>> a.clear()
    >>> a
    []
    >>> 
    

    del

    >>> a = [0, 1, 2, 3]
    >>> del a
    >>> a
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        a
    NameError: name 'a' is not defined
    >>> 
    

    reverse()

    >>> a = [0, 1, 2, 3]
    >>> a.reverse()
    >>> a
    [3, 2, 1, 0]
    >>> 
    

    sort()

    >>> a = [1, 3, 5, 2, 4, 6]
    >>> a.sort()
    >>> a
    [1, 2, 3, 4, 5, 6]
    >>> a.sort(reverse=True)
    >>> a
    [6, 5, 4, 3, 2, 1]
    >>> 
    

    count()

    >>> a = [1, 2, 3, 2, 1]
    >>> a.count(1)
    2
    >>> 
    

    len()

    >>> a = [1, 2, 3, 4, 5]
    >>> len(a)
    5
    >>> 
    

    说明

    • len(list)O(1) 的,不像 C 那样每次都要重新遍历,因为 list 有块记录长度的空间

    index()

    >>> a = ['1', '2', '3', '2', '1']
    >>> a.index('2')
    1
    >>> a.index('2', 2)
    3
    >>> a.index('5')
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        a.index('5')
    ValueError: '5' is not in list
    >>> 
    

    copy()

    >>> a = [0, 1, 2, 3]
    >>> b = a.copy()
    >>> id(a)
    2113228704064
    >>> id(b)
    2113228640128
    >>> a[0] = 10
    >>> a
    [10, 1, 2, 3]
    >>> b
    [0, 1, 2, 3]
    >>> 
    >>> c = [0, 1, [2, 3]]
    >>> d = a.copy()
    >>> c[2][0] = 20
    >>> c
    [0, 1, [20, 3]]
    >>> d
    [0, 1, [20, 3]]
    >>> 
    

    说明

    • copy() 只能管第一层
    • 若想“深拷贝”,需要 from copy import deepcopy, b = deepcopy(a)
  • 相关阅读:
    qsort
    strcmp
    LotteryDrawing
    retire or not retire ? is a question.
    alloc && afree
    strlen
    c point
    c point ccccc
    MySQL MGR源码分析2
    MySQL MGR实现分析
  • 原文地址:https://www.cnblogs.com/yorkyu/p/10250788.html
Copyright © 2011-2022 走看看