zoukankan      html  css  js  c++  java
  • 数据类型之列表

    列表(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

  • 相关阅读:
    httpcontext in asp.net unit test
    initialize or clean up your unittest within .net unit test
    Load a script file in sencha, supports both asynchronous and synchronous approaches
    classes system in sencha touch
    ASP.NET MVC got 405 error on HTTP DELETE request
    how to run demo city bars using sencha architect
    sencha touch mvc
    sencha touch json store
    sencha touch jsonp
    51Nod 1344:走格子(贪心)
  • 原文地址:https://www.cnblogs.com/keithtt/p/7628170.html
Copyright © 2011-2022 走看看