从0开始学Python-day5
Python列表(list)
Python 支持多种复合数据类型,可将不同值(类型不同,数值不同)组合在一起。最常用的列表 ,是用方括号标注,逗号分隔的一组值。列表可以包含不同类型的元素,但一般情况下,各个元素的类型相同
列表是一种复合数据容器
list1 = ['openAI', 'hqyj', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"] list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
1、访问列表中的值
1.1 索引
与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
列表的索引(下标,index)不能超出索引范围(越界)(正负都不行)
list = ['red', 'green', 'blue', 'yellow', 'white', 'black'] print( list[0] ) print( list[1] ) print( list[2] )
x=[1,2,31,43,45] for i in range(len(x)):#range表示的是数列这个数据容器 print(i,x[i]) for el in x: print(el,'1111')
1.2 反向索引
索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
list = ['red', 'green', 'blue', 'yellow', 'white', 'black'] print( list[-1] ) print( list[-2] ) print( list[-3] )
1.3 切片索引
使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符
注意:切片是深拷贝操作,变量直接赋值是浅拷贝操作
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90] print(nums[0:4])
list = ['openAI', 'hqyj', "Zhihu", "Taobao", "Wiki"] # 读取第二位 print (list[1]) # 从第二位开始(包含)截取到倒数第二位(不包含) print (list[1:-2]) # 从下标2开始(包含2)到最后一个 print (list[2:]) # 从下标0开始到下标3结束(左闭右开) print (list[:3])
x=[20,30,40,50,60,70,80,90] x2=x[3:5]#x2表示从x列表中截取一个片段 得到一个新的列表 [3,5) print("x2",x2) x3=x[2:-2]#[2,-2) 从左往右取数据 从2对应的元素开始取值 一直取到-2对应的元素 print("x3:",x3) x4=x[-3:4]#从左往右取数据,如果切片的范围没能取到任何元素,就会得到一个空的列表(不会报错) print("x4:",x4) x5=x[1:100] print("x5:",x5) x6=x[60:100]#超过了不会报错 print("x6:",x6) x7=x[:4]#省略冒号前面的 就表示从0开始 print(x7) x8=x[4:]#省略冒号前面的 就表示到len()结束 print(x8) x9=x[:-1]#不取最后一个元素 print(x9) x9=x[-1:]#取最后一个 print(x9) x10=x[1:6:2]#[x[1],x[3],x[5]] print("x10:",x10) x11=x[1:6:1]#[x[1],x[2],x[3],x[4],x[5]] print('x11:',x11) x12=x[:8:2]#0 2 4 6 print('x12:',x12) x13=x[2::2]#2 4 6 8,从2下标开始取数据,步长2 一直取到结束 print('x13:',x13) x13=x[::]#全取 x13=x[:]#全取 x16=x[::-2] x17=x[1:5:-1]#不行 ,步长达不到0,取的为空 x17=x[5:1:-1]#可以 #步长填负数的,前面一般不取 #把一个列表反转 #[::-1]
2、更新列表
对列表的数据项进行修改或更新,也可以使用 append() 方法来添加列表项
list = ['openAI', 'hqyj', 1997, 2000] print (list[2]) list[2] = 2001 print (list[2]) list1 = ['openAI', 'hqyj', 'Taobao'] list1.append('Baidu') print (list1)
x=[10,20,30,40,50] print(x[0]) x[0]=100#通过下标修改列表中的数据 print(x) print(x[0]) #添加元素到列表的末尾 x.append(60)#只能给一个数据 print(x) #更新切片 会修改原列表(深拷贝) x=[10,20,30,40,50,60] x2=x[2:5] print("x:",x) print("x2:",x2) print(id(x),id(x2))#x和x2不是同一个id print(id(100),id(100)) x2[0]=300 print("x2的下标0对应的元素被修改后",x2) print("x2的下标0对应的元素被修改后",x) #深拷贝和浅拷贝 #浅拷贝-共用一个内存 x=[10,20,30] x2=x x2[0]=100 print(x) print(x2) print(id(x),id(x2)) #深拷贝-两个数据一样,但是是两个内存空间 x=[100,200,300] x2=[x[0],x[1],x[2]] print(x) print(x2) x2[0]=999 print(x) print(x2)
x=[100,200,300] x2=[x[0],x[1],x[2]] print(x) print(x2) x2[0]=999 print(x) print(x2) #切片后得到一个新的列表 切片是取值操作 不能赋值 x=[10,20,30,40] x[0]=100 print(x) x[1:3]=100#报错,数据是不能赋值给数据的 print("x:",x) #x[1]=把下标为1的存储空间找到然后更新里面的数据 #=x[1]把下标为1的存储空间找到然后取出里面的数据
x=[10,20,"hello",-12,True,None,10000,[10,20,30,40]] print(x) x2=x[3:-1] print(x2) x2[0]=9999 print(x,x2)#深拷贝 x3=x[3:] print(x,x3) x3[0]=100 print(x,x3) x3[4]="hello" print(x,x3) #列表的切片的元素是一种浅拷贝过来的元素,浅切片 #切片后 新列表中的元素和原列表中的切片范围的元素“长得一样”是通过浅拷贝得到的 #x1=浅拷贝x2 #x1=深拷贝x2 x=[10,20,"hello",-12,True,None,10000,[10,20,30,40]] x2=x[6:] print(x,x2) x3=x2[1] print(x3[0]) x3[0]=9999 print(x,x2,x3)
3、删除列表元素
可以使用 del 语句来删除列表的的元素
list = ['openAI', 'hqyj', 1997, 2004] print (list) del list[2] print (list)
x=[10,20,30,40,50] del x[2] #x[2]=None print(x) print(len(x)) print(x[2]) del x#删除变量 x=[]#更新变量/删除变量
4、列表操作符
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print(x) | 1 2 3 | 迭代 |
5、嵌套列表
使用嵌套列表即在列表里创建其它列表
a = ['a', 'b', 'c'] n = [1, 2, 3] x = [a, n] print(x)#[['a', 'b', 'c'], [1, 2, 3]] print(x[0])#['a', 'b', 'c'] print(x[0][1])#b
6、Python列表常用API
操作列表的函数
序号 | 函数 |
---|---|
1 | len(list)列表元素个数 |
2 | max(list)返回列表元素最大值 |
3 | min(list)返回列表元素最小值 |
4 | list(seq)将元组转换为列表 |
列表的方法
序号 | 方法 |
---|---|
1 | list.append(obj)在列表末尾添加新的对象 |
2 | list.count(obj)统计某个元素在列表中出现的次数 |
3 | list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj)从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj)将对象插入列表 |
6 | list.pop(index=-1)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj)移除列表中某个值的第一个匹配项 |
8 | list.reverse()反向列表中元素 |
9 | list.sort( key=None, reverse=False)对原列表进行排序: x.sort(key=lambda a:abs(a-3), reverse=False) |
10 | list.clear()清空列表 |
11 | list.copy()复制列表 |