1.列表
-
变量可以存储一个元素,而列表是一个’大容器’,可以存储N多个元素,程序可以方便对这些数据进行整体操作。
-
列表相当于其他语言的数组
1.1 创建列表
- 使用中括号
- 调用内置函数list()
#使用中括号 lst = ['hello','world',98] print(lst) #使用内置函数 lst2 = list[''hello','world',98']
1.2 列表特点
- 列表元素按顺序有序排列
- 索引映射唯一一个数据
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
lst = ['hello','world',98] print(lst[0]) # hello print(lst[-3]) # hello
1.3 列表查询
index()
- 如果列表中存在N个相同元素,只返回第一个相同元素的索引
- 查询不存在,抛出ValueError
- 可以指定在start和stop之间查找
lst = ['hello','world',98,'hello'] print(lst.index('hello')) # 0 print(lst.index('java')) #ValueError print(lst.index('hello',1,4)) # 3
1.3.1 列表切片
列表名[start : stop : step]
lst = [10,20,30,40,50,60,70,80] print(lst[1:6:1]) #[20,30,40,50,60] print(lst[1:6]) #[20,30,40,50,60] 默认步长1 print(lst[1:6:]) #[20,30,40,50,60] print(lst[1:6:2]) #[20,40,60] print(lst[:6:2]) #[10,30,50] print(lst[1::2]) #[20,40,60,80] #st3p=-1 print(lst[::-1]) #[80,70,60,50,40,30,20,10] #start=7 step=-1 print(lst[7::-1]) #[80,70,60,50,40,30,20,10] #start=6 stop=0 step=-2 print(lst[6:0:-2]) #[70,50,30]
1.3.2遍历和判断
# 判断 in/not in lst = [10,'20','python','java'] print(10 in lst) #True print(100 in lst) #False print(100 not in lst) #True #遍历 for item in lst: print(item) ''' 10 20 python java '''
1.4列表增删改
1.4.1 增加操作
- append() 在列表末尾添加一个元素 (添加前后的列表id相同)
- extend() 在列表末尾至少添加一个元素
- insert() 在列表任意位置添加一个元素
- 切片 在列表任意位置添加至少一个元素
lst = [10,20,30] lst.append(100) print(lst) #[10,20,30,100] lst2 = ['hello','world'] # lst.addpend(lst2) #[10,20,30,100,['hello','world']] lst.extend(lst2) #[10,20,30,100,'hello','world'] lst.insert(1,90) #[10,90,20,30,100,'hello','world'] lst3 = [True,False,'hello'] #切片 lst[1:]=lst3 #第一个开始的元素全部切掉 print(lst) #[10,True,False,'hello']
1.4.2 删除操作
- remove() 一次删除一个元素,重复元素只删除第一个,元素不存在抛出ValueError
- pop() 删除指定索引位置上的元素,指定索引不存在抛出ValueError,不指定索引删除最后一个
- 切片 一次至少删除一个元素
- clear() 清空列表
- del 删除列表
lst = [1,2,3,4,5,6,7,8] lst.remove(3) print(lst) #[1,2,4,5,6,7,8] lst.pop(1) print(lst) #[2,4,5,6,7,8] lst.pop() print(lst) #[2,4,5,6,7] #切片 lst[1:3] = [] print(lst) #[2,6,7] lst.clear() print(lst) #[] del lst
1.4.3修改
- 为指定索引的元素赋予一个新值
- 为指定的切片赋予一个新值
lst = [10,20,30,40] lst[2] = 100 print(lst) #[10,20,100,40] lst[1:3] = [300,400,500,600] print(lst) #[10,300,400,500,600,40]
1.5列表排序操作
- 调用sort()方法,列表中所有元素默认按从小到大排序,可以指定reverse=True进行降序
- 调用内置函数sorted(),可以指定reserve=True,进行降序,原列表不发生改变
lst = [20,40,10,98,54] lst.sort() print(lst) #[10,20,40,54,98] 排序前后ID不发生改变 lst.sort(reverse=True) #不指定默认False print(lst) #[98,54,30,20,10] lst2 = [20,40,10,98,54] new_list = sorted(lst) print(new_list) #[10,20,40,54,98] 排序前后ID改变 new_list2 = sorted(lst,reverse=True) print(new_list2) #[98,54,30,20,10]
1.6 列表生成式
lst = [for i in range(1,10)] print(lst) #[1,2,3,4,5,6,7,8,9] lst2 = [i*i for i in range(1,10)] print(lst2) #[1,4,9,16,25,36,49,64,81] #列表中元素为2,4,6,8,10 lst3 = [i*2 for i in range(1,6)] print(lst3) #[2,4,6,8,10]