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