• 数据类型之列表


    列表(list)是一种可变序列,官方叫做 Mutable Sequence Types。

    列表用方括号表示,不同的元素之间用逗号隔开,可包含任意数据类型。

    列表中的元素可以被修改,可以重新赋值,这是list月tuple的主要区别。

    索引编号:

    • 0,1,2 ... n-1
    • -n ... -3,-2,-1

    内置函数

    >>> L=[1,2,3,4]
    >>> dir(L)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    

    append:在列表末尾追加一个对象。

    >>> help(L.append)
    Help on built-in function append:
    
    append(...) method of builtins.list instance
        L.append(object) -> None -- append object to end 
        返回None,直接修改原列表,时间复杂度是O(1)
    
    >>> nums=[1,2,3]
    >>> nums.append('a')
    >>> nums
    [1, 2, 3, 'a']
    

    extend:将一个可迭代对象中的元素全部追加到列表后面。

    >>> help(L.extend)
    Help on built-in function extend:
    
    extend(...) method of builtins.list instance
        L.extend(iterable) -> None -- extend list by appending elements from the iterable
        返回None,直接修改原列表
    
    >>> nums
    [1, 2, 3, 'a', 'b']
    >>> nums.extend('abc')
    >>> nums
    [1, 2, 3, 'a', 'b', 'a', 'b', 'c']
    

    insert:在指定位置前插入对象。

    >>> help(L.insert)
    Help on built-in function insert:
    
    insert(...) method of builtins.list instance
        L.insert(index, object) -- insert object before index
        返回None,直接修改原列表,时间复杂度是O(n)
        索引可以超过上下限,超过第一个则添加到最前面,超过最后一个则追加到尾部
    
    >>> nums=['a','b','c']
    >>> nums.insert(1,1)
    >>> nums
    ['a', 1, 'b', 'c']
    

    index:返回第一个搜索到的元素的索引编号。

    >>> help(L.index)
    Help on built-in function index:
    
    index(...) method of builtins.list instance
        L.index(value, [start, [stop]]) -> integer -- return first index of value.
        Raises ValueError if the value is not present.
    
    >>> nums=[3,8,5,3,9,1,4,6]
    >>> nums.index(3)
    0
    

    count:返回一个元素出现的次数。

    Help on method_descriptor:
    
    count(...)
        L.count(value) -> integer -- return number of occurrences of value
    
    >>> nums=[3,8,5,3,9,1,4,6]
    >>> nums.count(3)
    2
    

    index和count方法的时间复杂度都是O(n),随着列表长度增大而效率下降

    clear:清空列表中的所有元素。

    >>> help(L.clear)
    Help on built-in function clear:
    
    clear(...) method of builtins.list instance
        L.clear() -> None -- remove all items from L
    

    pop:删除指定位置的元素并返回元素,如果不指定位置则默认删除最后一个。

    >>> help(L.pop)
    Help on built-in function pop:
    
    pop(...) method of builtins.list instance
        L.pop([index]) -> item -- remove and return item at index (default last).
        Raises IndexError if list is empty or index is out of range.
    
    >>> nums
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> nums.pop()
    9
    >>> nums.pop(0)
    0
    >>> nums
    [1, 2, 3, 4, 5, 6, 7, 8]
    

    remove:删除列表中第一个搜索到的value,注意这里是value即元素值,而不是索引位置。

    >>> help(L.remove)
    Help on built-in function remove:
    
    remove(...) method of builtins.list instance
        L.remove(value) -> None -- remove first occurrence of value.
        Raises ValueError if the value is not present.
    
    >>> nums
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> nums.remove(3)
    >>> nums
    [1, 2, 4, 5, 6, 7, 8]
    

    reverse:反序排列。

    >>> help(L.reverse)
    Help on built-in function reverse:
    
    reverse(...) method of builtins.list instance
        L.reverse() -- reverse *IN PLACE*
        就地修改,返回None
    
    >>> nums
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> nums.reverse()
    >>> nums
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    

    sort:排序。

    >>> help(L.sort)
    Help on built-in function sort:
    
    sort(...) method of builtins.list instance
        L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
    
    >>> nums=[3,8,5,9,1,4,6]
    >>> nums.sort()
    >>> nums
    [1, 3, 4, 5, 6, 8, 9]
    

    单独说一下range函数

    range函数是python的内置函数,常用来快速创建列表,从官网上以及查询帮助看,官方似乎把range单独当作一种数据类型,有自己的内置函数。

    >>> dir(range)
    ['__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop']
    

    用法:

    range(stop)
    range(start, stop[, step])
    

    start表示开始,默认为0。
    stop表示结束。
    step表示步长,默认为1。

    示例:

    >>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> list(range(1, 11))
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> list(range(0, 30, 5))
    [0, 5, 10, 15, 20, 25]
    >>> list(range(0, 10, 3))
    [0, 3, 6, 9]
    >>> list(range(0, -10, -1))
    [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
    >>> list(range(0))
    []
    >>> list(range(1, 0))
    []
    

    参考:
    https://docs.python.org/3/library/stdtypes.html#lists
    https://docs.python.org/3/library/stdtypes.html#ranges

  • 相关阅读:
    CFS 调度器
    RCU
    linux cfs 负载均衡
    wait_event_interruptible_timeout
    算法(13)Contiguous Array
    算法(12)Pascal's Triangle II
    算法(12)Best Time to Buy and Sell Stock II
    算法(11)Find All Duplicates in an Array
    算法(10)Subarray Sum Equals K
    算法(9)Find the Duplicate Number
  • 原文地址:https://www.cnblogs.com/keithtt/p/7628170.html
Copyright © 2020-2023  润新知