数据类型之列表

列表(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))
[]

参考文档

posted @ 2017-10-05 05:01  KeithTt  阅读(187)  评论(0编辑  收藏  举报