序列是Python中最基本的数据结构。是任意对象的有序集合,可以嵌套也不必数据类型一致;操作包括索引,切片,加,乘,检查成员等。下面将详细介绍:
可以嵌套;可以不必数据类型一致(数字,字符串,列表,元组,集合或者字典等)
list=[]
list1= ['Google', 'Runoob', 1997, 2000] # 结果为:['Google', 'Runoob', 1997, 2000]
list2 = [1, (2, 3), 4, 5 ]
a = list([1, (2, 3), 4, 5 ]) # 结果为:[1, (2, 3), 4, 5 ]
b = list("Google") # 结果为:['G', 'o', 'o', 'g', 'l', 'e']
函数 | 参数 | 功能描述 |
---|---|---|
list.insert() | index和’obj’(obj可以是单个元素,也可以是列表、元组等) | 将obj作为整体,在指定位置添加元素,如果指定的下标不存在,那么就是在末尾添加 |
list.append() | 可以是单个元素,也可以是列表、元组等 | 在list 末尾增加一个元素 |
list1.extend() | 可以是单个元素,也可以是列表、元组等 | 不是将追加的列表或元组当成一个整体,而是追加列表或元组中的元素 |
“+” | 列表、元组等“+”列表、元组等 | 追加列表或元组中的元素 |
“*” | 列表、元组等“*”number | 重复列表中元素number遍(不是对列表中的元素值进行扩大或缩小) |
# 接上段代码
list1.append(list2) # list2作为一个元素,添加到list1末尾:['Google', 'Runoob', 1997, 2000, [1, (2, 3), 4, 5]]
list1.extend(list2) # list2中的每个元素,作为list1中的元素逐个添加在末端:['Google', 'Runoob', 1997, 2000, 1, (2, 3), 4, 5]
list1+list2 # 追加列表或元组中的元素:['Google', 'Runoob', 1997, 2000, 1, (2, 3), 4, 5]
list1*3 # 列表中元素3遍:['Google', 'Runoob', 1997, 2000, 'Google', 'Runoob', 1997, 2000, 'Google', 'Runoob', 1997, 2000]
其中,index为正数时,从左到右,从0开始记;如果index为负数时,从右到左,从-1开始记
list[n] | 取index=n的元素 |
list[n:m] | 切片 |
list[:m] | 切片从头开始取到index=m-1 |
list[n:] | 切片从index=n的元素取到最后 |
list[:] | 取全部 |
list[n: m: s] | s:步长;从index=n的开始到index=m-1,隔多少个元素取一次 |
注:切片同样适用于字符串,字符串也有下标
目的 | 函数 | 说明 |
---|---|---|
根据目标元素所在位置的索引值进行删除 | del | del是一个“语句”,没有“参数” |
根据元素的值进行删除 | .remove() | 函数是删除第一个和指定值相同的元素,如果找不到该元素,该方法将会引发 ValueError 错误。 |
将列表中所有元素全部删除 | .clear() |
a_list = [20, 'crazyit', 30, -4, (3, 4), 'crazyit', 3.4]
# 根据“索引”删除元素
del a_list[-1] # [20, 'crazyit', 30, -4, (3, 4), 'crazyit']
del a_list[1: 3] # [20, -4, (3, 4), 'crazyit', 3.4]
# 根据“元素值”删除第一个和指定值相同的元素
a_list.remove(30) # # 删除第一次找到的30:[20, 'crazyit', -4, (3, 4), 'crazyit', 3.4]
a_list.remove('crazyit') # 删除第一次找到的'crazyit':[20, 30, -4, (3, 4), 'crazyit', 3.4]
a_list.remove(30) #再次尝试删除 30,引发 ValueEroor 错误
# 删除整个列表
a_list.clear() # []
列表的元素相当于变量,因此程序可以对列表的元素赋值,即修改列表的元素;方法有两种: 索引和 slice 语法。其中,在执行slice操作时,并不要求新赋值的元素个数与原来的元素个数相等。这意味着通过这种方式既可为列表增加元素,也可为列表删除元素。下面介绍slice使用方法:
b_list = list(range(1, 5))
c_list = list(range(1, 10))
b_list[1: 3] = ['a', 'b'] # 从index=1开始取到index=3(不包含)元素赋值为新列表的元素:[1, 'a', 'b', 4]
b_list[2: 2] = ['x', 'y'] # 从index=2开始取到index=2(不包含)元素赋值为新列表的元素,就是插入“元素”:[1, 'a', 'x', 'y', 'b', 4]
b_list[2: 5] = [] # 从index=2开始取到index=5(不包含)元素赋值为空列表,就是删除:[1, 'a', 4]
# 指定step为2,被赋值的元素有4个,因此用于赋值的列表也必须有4个元素
c_list[2: 9: 2] = ['a', 'b', 'c', 'd'] # [1, 2, 'a', 4, 'b', 6, 'c', 8, 'd']
列表包含的所有方法,如下所示:
dir(list)
[‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]
函数 | 参数 | 功能 |
---|---|---|
.count() | obj 一个元素(可以是字符串,元组,列表等) | 用于统计列表中该元素出现的次数 |
.index() | obj,start,end | 在列表的指定范围内搜索元素obj,返回index值;如果找不到该元素,会引发 ValueError 错误 |
.pop() | 空/index | 移除列表中指定索引处的元素,如果不指定,默认会移除列表中最后一个元素 |
.reverse() | 将列表中所有元素反向存放 | |
.sort() | key=None, reserse=False | 对列表元素进行排序(key 参数用于指定从每个元素中提取一个用于比较的键。例如 key=str.lower 表示在排序时不区分字母大小写;reverse 参数用于设置是否需要反转排序,默认 False 表示从小到大排序;如果将该参数设为 True,将会改为从大到小排序) |
注意:
其中使用 pop() 方法,可以实现一种常见的数据结构——栈。栈是一种特殊的数据结构,它可实现先入后出(FILO)功能,即先加入栈的元素,反而后出栈。
# .count()和.index()方法的使用
d_list = [2, 30, 'a', 'b', 'crazyit',[5, 30], 30]
d_list.count([5, 30]) # 计算列表中[5, 30]的出现次数
d_list.index(30)) # 定位元素30的出现位置
d_list.index(30, 2) # 从索引2处开始、定位元素30的出现位置
d_list.index(30, 2, 4) # 从索引2处到索引4处之间定位元素30的出现位置,因为找不到该元素,会引发 ValueError 错误
# .sort()方法的使用
e_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang']
e_list.sort() # 对列表元素排序:默认按字符串包含的字符的编码大小比较
e_list.sort(key=len) # 指定key为len,指定使用len函数对集合元素生成比较的键,也就是按字符串的长度比较大小
e_list.sort(key=len, reverse=True) # 指定反向排序