list列表是Python内置的一种数据类型,本质是一种有序的集合,这里将会讲到list的具体的一些用法以及常见的函数
创建列表
语法:列表名 = [元素1,元素2,元素3…元素n]
说明:列表中的选项被称为元素,跟string类似,下标也是从0开始计数,一个列表中的数据类型可以各不相同。
创建列表代码如下:
#创建空列表
list1 = []
#创建带有元素的列表
list2 = [10, 20, 30, 10]
print(list2) #[10, 20, 30, 10]
list3 = [33, "good", True, 10.32]
print(list3) #[33, ‘good‘, True, 10.32]
列表元素的访问
列表的取值
语法:列表名[索引]
功能:访问list列表中元素值
list4 = [22, 33, 12, 32, 45]
#下标从0开始,最大值为len(list4)-1
print(list4[0]) #22
注意:当索引值大于len(list4)-1的时候,会出现以下错误:
IndexError: list index out of range
这个错误就是下标越界【下标超出了可表示的范围】
列表元素的替换
语法:列表名[下标] = 值
功能:更改列表元素的值
list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4) #[‘hello‘, 33, 12, 32, 45]
列表的操作
列表组合
语法: list3 = list1 + list2,如下代码:
list1 = [1, 2, 3]
list2 = [‘hello‘,‘yes‘,‘no‘]
print(list1+list2) #[1, 2, 3, ‘hello‘, ‘yes‘, ‘no‘]
列表重复
语法: list2 = list1 * n,如下代码:
list1 = [1, 2, 3]
print(list1*3) #[1, 2, 3, 1, 2, 3, 1, 2, 3]
判断元素是否在列表中
语法:x in list1
若存在则返回True,否则返回False,如下代码:
list1 = [1, 2, 3]
print(1 in list1) #True
列表截取
语法:list1[start:end]
表示获取从开始下标到结束下标的所有元素[start, end)。若不指定start,则默认从0开始截取,截取到指定位置;若不指定end,则从指定位置开始截取,截取到末尾结束。如下代码:
list1 = [1, 2, 3, ‘hello‘, ‘yes‘, ‘no‘]
print(list1[2:4]) #[3, ‘hello‘]
二维列表
语法:list = [list1,list2,…,listn]
创建二维列表,即列表中的元素还是列表,如下代码:
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
二维列表取值
语法:list1[n][m]
注意:n代表list列表中第n个列表(下标从0开始),m代表list列表第n个列表中的第m个元素
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[1][1]) #3
常见函数的使用
list.append(元素/列表)
功能:在列表中末尾添加新的元素【在原本的列表中追加元素】
注意:append()中的值可以是列表也可以是普通元素
list1 = [3, 4, 6]
list1.append(6)
print(list1) #[3, 4, 6, 6]
list.extend(列表)
功能:在列表的末尾一次性追加另外一个列表中的多个值
注意:extend()中的值只能是列表/元组[一个可迭代对象],不能是元素
list1 = [1,2,3]
list2 = [3, 4,5]
list1.extend(list2)
print(list1) #[1, 2, 3, 3, 4, 5]
list.insert(下标值, 元素/列表)
功能:在下标处插入元素,不覆盖原本的数据,原数据向后顺延
注意:插入的数据可以是元素也可以为列表
list1 = [1,2,3]
list1.insert(1,0)
print(list1) #[1, 0, 2, 3]
list1.insert(1,[2, 4, 8])
print(list1) #[1, [2, 4, 8], 0, 2, 3]
list.pop(下标值)
功能:移除列表中指定下标处的元素(默认移除最后一个元素),并返回移除的数据
list1 = [1, [2, 4, 8], 0, 2, 3]
print(list1.pop()) #3
print(list1.pop(2)) #0
print(list1) #[1, [2, 4, 8], 2]
list.remove(元素)
功能:移除列表中的某个元素第一个匹配结果
list1 = [1, 2, 3]
list1.remove(2)
print(list1) #[1, 3]
list.clear()
功能:清除列表中所有的数据
list1 = [1, 2, 3]
list1.clear()
print(list1) #[]
list.index(object[, start][, stop])
功能:从指定的范围的列表中找出某个值第一匹配的索引值 ;若不指定范围,则默认是整个列表
list1 = [1, 2, 3]
print(list1.index(2)) #1
注意:若在列表中找不到这个元素,则会报错。如下:
list1 = [1, 2, 3]
print(list1.index(4))
ValueError: 4 is not in list
list.count(元素)
功能:查看元素在列表中出现的次数
list1 = [1, 2, 3, 1]
print(list1.count(1)) #2
len(list)
功能: 获取元素列表个数
list1 = [1, 2, 3, 1]
print(len(list1)) #4
max(list)
功能: 获取列表中的最大值
list1 = [1, 2, 3, 1]
print(max(list1)) #3
min(list)
功能:获取列表中的最小值
list1 = [1, 2, 3, 1]
print(min(list1)) #1
list.reverse()
功能:将列表中的元素倒叙,操作原列表,不返回新的列表
list1 = [1, 2, 3, 1]
list1.reverse()
print(list1) #[1, 3, 2, 1]
list.sort(reverse=False)
功能:将list中的元素进行升序排列【默认reverse=False】,当reverse为True的时候,降序排列。
list1 = [1, 2, 3, 1]
list1.sort()
print(list1) #[1, 1, 2, 3]
list(元组)
功能:将元组转为列表
list1 = list((1, 2, 3, 4))
print(list1) #[1, 2, 3, 4]
拷贝
赋值拷贝/引用拷贝
语法: list2 = list1
list1 = [1, 2, 3, 1]
list2 = list1
print(list2) #[1, 2, 3, 1]
print(id(list1)) #43148104
print(id(list2)) #43148104
注意:赋值拷贝为引用拷贝,类似于快捷方式
浅拷贝
用法:list2 = list1.copy()
list1 = [1, 2, 3, 1]
list2 = list1.copy()
print(list2) #[1, 2, 3, 1]
print(id(list2)) #35534216
print(id(list1)) #36332360
注意:只适用于一维列表。
不完全内存拷贝,对于一维列表重新开辟了一块内存空间,但若出现二维列表的情况下,因为二维列表存放在一维列表中存放的是列表的地址,因此,若出现二维列表相当于间接的引用了同一块内存区域。
3.深拷贝
import copy
list2 = copy.deepcopy(list1)
完全内存拷贝,相当于将list1中的所有列表中元素重新复制了一份,对于多维的也重新开辟了内存空间,因此它不会出现内存共用的情况。
import copy
list1 = [1,2,3,4,[1,2,3,4]]
list2 = copy.deepcopy(list1)
list2[-1][-1] ="hello"
print(list1) #[1, 2, 3, 4, [1, 2, 3, 4]]
print(list2) #[1, 2, 3, 4, [1, 2, 3, ‘hello‘]]
print(id(list1)) #43225864
print(id(list2)) #43227144
列表的遍历
使用for循环遍历列表
for x in list1
循环体
功能:for循环主要用于遍历列表
遍历:指的是依次访问列表中的每一个元素,获取每个下标对应的元素值
说明:按照顺序获取列表中的每个元素,赋值给变量名,再执行语句,如此循环往复,直到取完列表中所有的元素为止
list1 = [‘hello‘, 78, ‘你好‘, ‘good‘]
for item in list1:
print(item,end=‘ ‘)
#hello 78 你好 good
使用while循环遍历列表[使用下标循环]
index = 0
while index < len(list1):
循环体
index += 1
具体代码如下:
list1 = [‘hello‘, 78, ‘你好‘, ‘good‘]
index = 0
while index < len(list1):
print(list1[index],end=‘ ‘)
index += 1
#hello 78 你好 good
同时遍历下标与元素
for index,value in enumerate(list1):
循环体
enumerate()[枚举]函数用于一个可遍历的数据对象(如列表,元组或者字符串)组合为一个索引序列,同时列出数据与数据下标,一般使用在for循环中
enumerate(obj, [start =0])
obj:一个可迭代对象
start:下标起始位置
具体代码实现如下:
list1 = [‘hello‘, 78, ‘你好‘, ‘good‘]
for index,item in enumerate(list1):
print(index, item)
运行结果如下:
0 hello
1 78
2 你好
3 good
原文地址:https://blog.51cto.com/14447496/2420687