list
>>> classmates = ['Michael', 'Bob', 'Tracy']>>> len(classmates) # 用len()函数可以获得list元素的个数>>> classmates[0] # 用索引来访问list中每一个位置的元素,记得索引是从0开始的# 最后一个元素的索引是len(classmates) - 1>>> classmates[-1] # 直接获取最后一个元素,类推,倒数第二个为 classmates[-2]
当索引超出范围时,Python会报一个IndexError错误。
切片
切片适用于提取序列的一部分,其中的编号非常重要:第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号,第三个参数是步长。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]numbers[3:6] # [4, 5, 6]numbers[-3:-1] # [8, 9] 从列表末尾开始数,可使用负数索引numbers[-3:0] # []numbers[-3:] # [8, 9, 10] 如果切片结束于序列末尾,可省略第二个索引numbers[:3] # [1, 2, 3] 切片始于序列开头,可省略第一个索引numbers[:] # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 复制整个序列,可将两个索引都省略# 步长不能为0numbers[0:10:2] # [1, 3, 5, 7, 9]numbers[::4] # [1, 5, 9]# 插入新元素>>> numbers = [1, 5]>>> numbers[1:1] = [2, 3, 4]>>> numbers[1, 2, 3, 4, 5]
添加和删除
>>> classmates.append('Adam') # 往list中追加元素到末尾>>> classmates.insert(1, 'Jack') # 把元素插入到指定位置,如索引号为1的位置>>> classmates.pop() # 删除list末尾的元素>>> classmates.pop(1) # 删除指定位置的元素,用pop(i),i是索引位置>>> classmates[1] = 'Sarah' # 直接赋值给对应的索引位置,替换元素>>> classmates.clear() # 就地清空列表# 使用 del 语句删除元素,列表长度会减少>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']>>> del names[2]>>> names['Alice', 'Beth', 'Dee-Dee', 'Earl']>>> names[1:4] = [] # 切片替换删除,与del names[1:4]等效>>> names['Alice']
复制
# number1,2,3指向不同的列表number1 = [1,2,3,4,5]number2 = number[:] # 切片复制number3 = list(number1) # list复制
append
将一个对象附加到列表末尾。(直接修改旧列表。)
>>> lst = [1,2,3]>>> lst.append(4)>>> lst[1,2,3,4]
clear
就地清空列表的内容
>>> lst = [1,2,3]>>> lst.clear()>>> lst[] #
类似于切片赋值语句 lst[:] = []。del lst[:]也可达到同样效果。
copy
复制列表。与常规复制lst1 = lst2只是将另一个名称关联到列表不同。
>>> a = [1,2,3]>>> b = a.copy()>>> b[1] = 4>>> a[1,2,3]
类似于使用a[:]或list(a),都是复制a。
count
计算指定的元素在列表中出现了多少次。
>>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to')2>>> x = [[1,2], 1, 1, [2, 1 ,[1, 2]]]>>> x.count(1)2>>> x.count([1, 2])
extend
同时将多个值附加到列表末尾。
>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> a.extend(b)>>> a[1, 2, 3, 4, 5, 6]
类似于拼接,但存在一个重要差别。常规拼接中,情况是返回一个全新的序列。而extend修改被扩展的序列。
>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> a + b[1, 2, 3, 4, 5, 6]>>> a[1, 2, 3]
index
在列表中查找指定值第一次出现的索引。
搜索不存在的元素,会报错。
>>> knights = ['we', 'are', 'the', 'knignts', 'who', 'say', 'ni']>>> knights.index('who')4
insert
将一个对象插入列表。
>>> numbers = [1,2,3,5,6,7]>>> numbers.insert(3, 'four')>>> numbers[1,2,3,'four',5,6,7]
也可用切片赋值来获得一样的效果,但可读性不如insert.
>>> numbers = [1,2,3,5,6,7]>>> numbers[3:3] = ['four']>>> numbers[1,2,3,'four',5,6,7]
pop
从列表中删除一个元素(默认为末尾为最后一个元素),并返回这一元素。(即返回删除的元素)。
>>> x = [1,2,3]>>> x.pop()3>>> x[1,2]>>> x.pop(0)1>>> x[2]
注意 pop是唯一既修改列表又返回一个非None值的列表方法。
Python没有提供push,但可用append替代。要创建先进先出的队列,可使用insert(0, ...)代替append。
remove
用于删除第一个为指定值的元素。删除不存在的值会报错。
>>> x = ['to', 'be', 'or', 'not', 'to', 'be']>>> x.remove('be')>>> x['to', 'or', 'not', 'to', 'be']
remove是就地修改且不返回值的方法之一。
reverse
按相反的顺序排列列表中的元素。
>>> x = [1,2,3]>>> x.reserve()>>> x[3,2,1]
remove修改列表,但不返回任何值。
sort
对列表就地排序。
>>> x = [4,6,2,1,7,9]>>> x.sort()>>> x[1,2,4,6,7,9]
为获取排序后的列表的副本,另一种方式是使用函数sorted。
>>> x = [4,6,2,1,7,9]>>> y = sorted(x)>>> x[4,6,2,1,7,9]>>> y
函数sorted可用于任何可迭代的对象,但总是返回一个列表。
高级排序
方法sort接受两个可选(关键字)参数:key和reverse。
# key其设置为一个用于排序的函数>>> x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']>>> x.sort(key=len)>>> x['add', 'acme', 'aerate', 'abalone', 'aardvark']# reverse指定为一个真值,指出是否要按相反的顺序对列表进行排序>>> x = [4, 6, 2, 1, 7, 9]>>> x.sort(reverse=True)>>> x[9, 7, 6, 4, 2, 1]
tuple
和list非常类似,但是tuple一旦初始化就不能修改。
获取元素的方法和list是一样,但不能赋值成另外的元素。
>>> x = 1, 2, 3>>> x(1, 2, 3)>>> t = () # 定义一个空的tuple>>> t = (1,) # 定义一个只有1个元素的tuple,不能写成t = (1)>>> t(1,) # Python在显示只有一个元素的tuple时也会加逗号避免歧义。>>> t = (1, 2)>>> 3 * (40 + 2)126>>> 3 * (40 + 2,)(42, 42, 42)
# 可变的tuple>>> t = ('a', 'b', ['A', 'B'])>>> t[2][1] = 'X'
