列表是由一系列按照特定顺序排列的元素组成,可以通过方括号([])来表示列表,并用逗号分隔里面的元素。
>>> alist = [1,2,3,4,5,6]
>>> alist
[1, 2, 3, 4, 5, 6]
列表的基础操作
列表元素的访问(索引和切片)
>>> alist[0]
1
>>> alist[-1]
6
>>> alist[-2:]
[5, 6]
>>> alist[1:3]
[2, 3]
列表元素的修改
>>> alist[0] = 22
>>> alist
[22, 2, 3, 4, 5, 6]
列表的拷贝
#浅拷贝,blist修改元素不影响alist
>>> blist = alist[:]
>>> blist
[22, 2, 3, 4, 5, 6]
>>> blist[0] = 0
>>> alist
[22, 2, 3, 4, 5, 6]
#深拷贝,clist修改元素影响blist
>>> clist = blist
>>> clist[0] = 12
>>> blist
[12, 2, 3, 4, 5, 6]
计算列表长度
>>> blist
[12, 2, 3, 4, 5, 6]
>>> len(blist)
6
列表的常见方法
列表元素的增加
在列表末尾添加一个元素,append()
>>> alist = []
>>> alist.append(1)
>>> alist
[1]
>>> alist.append(2)
>>> alist
[1, 2]
在列表中插入一个元素,insert()
>>> blist = [1,2,3,4]
>>> blist.insert(1,5)
>>> blist
[1, 5, 2, 3, 4]
使用可迭代对象中的所有元素来扩展列表,extend()
近似 相当于 += 或 a[len(a)]=b
>>> blist
[1, 5, 2, 3, 4]
>>> alist
[1, 2]
>>> alist.extend(blist)
>>> alist
[1, 2, 1, 5, 2, 3, 4]
>>> alist =[1,2]
>>> alist[len(alist):] = blist
>>> alist
[1, 2, 1, 5, 2, 3, 4]
列表元素的删除
删除指定位置的元素并返回它,pop()
如果pop()没有给定参数,则删除并返回最后一个元素
>>> alist
[1, 2, 1, 5, 2, 3, 4]
>>> alist.pop()
4
>>> alist
[1, 2, 1, 5, 2, 3]
如果给定参数,则删除指定参数位置的元素并返回之
>>> alist
[1, 2, 1, 5, 2, 3]
>>> alist.pop(1)
2
>>> alist
[1, 1, 5, 2, 3]
移除第一个值为指定值的元素,如果没有则会报错,remove()
>>> alist
[1, 1, 5, 2, 3]
>>> alist.remove(1)
>>> alist
[1, 5, 2, 3]
>>> alist.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
删除所有元素,clear()
>>> alist
[1, 5, 2, 3]
>>> alist.clear()
>>> alist
[]
列表永久性排序,sort()
>>> alist = [1,2,4,3,8,6]
>>> alist.sort()
>>> alist
[1, 2, 3, 4, 6, 8]
>>> alist.sort(reverse = True)
>>> alist
[8, 6, 4, 3, 2, 1]
元素反转排列顺序,reverse()
>>> alist = [2,3,4,9,8,7]
>>> alist.reverse()
>>> alist
[7, 8, 9, 4, 3, 2]
我们也可以采用切片的形式进行反转
>>> alist
[7, 8, 9, 4, 3, 2]
>>> alist[::-1]
[2, 3, 4, 9, 8, 7]
列表的浅拷贝
上面我们提到过 b = a[:]相当于浅拷贝,修改b的时候不影响a。
我们也可以通过copy()进行浅拷贝
>>> alist
[7, 8, 9, 4, 3, 2]
>>> blist = alist.copy()
>>> blist[1] = 10
>>> alist
[7, 8, 9, 4, 3, 2]
一些常用语句
del语句
有一种方式可以从列表按照给定的索引而不是值来移除一个元素: 那就是 del 语句。 它不同于会返回一个值的 pop() 方法。 del 语句也可以用来从列表中移除切片或者清空整个列表(我们之前用过的方式是将一个空列表赋值给指定的切片)。
>>> alist
[7, 8, 9, 4, 3, 2]
>>> del alist[0]
>>> alist
[8, 9, 4, 3, 2]
>>> del alist[0:2]
>>> alist
[4, 3, 2]
>>> del alist[:]
>>> alist
[]
>>> del alist #删除了alist变量
>>> alist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'alist' is not defined
sorted语句
sorted()返回一个新的已排序列表,不会影响原有列表的排序
>>> alist = [2,3,4,9,8,7]
>>> sorted(alist)
[2, 3, 4, 7, 8, 9]
>>> alist
[2, 3, 4, 9, 8, 7]
>>> sorted(alist,reverse = True)
[9, 8, 7, 4, 3, 2]
列表推导式
列表推导式提供了一个更简单的创建列表的方法。常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列。
比如 常规的我们使用 for循环创建一个列表
>>> alist = []
>>> for i in range(1,10):
... alist.append(i)
>>> alist
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
以上相当于
>>> alist = list(i for i in range(1,10))
>>> alist = [i for i in range(1,10)]
列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for 子句,然后是零个或多个 for 或 if 子句。 其结果将是一个新列表,由对表达式依据后面的 for 和 if 子句的内容进行求值计算而得出。