列表
下标:每个元素在列表中的位置。
列表:是能够存储各种数据的容器。列表是可变的。列表是有序的(下标)。
-
创建一个空列表
list1 = []
-
可变 – > 增、删、改
a. 增加元素:append():追加、insert():插入.
list1.append('python') list1.append('Java') list1.append('Linux') list1.insert(1,'HTML5') list1.insert(1,0) print(list1) #['python', 0, 'HTML5', 'Java', 'Linux']
b.修改元素:通过下标修改元素
list1[1] = 'C' print(list1) #['python', 'C', 'HTML5', 'Java', 'Linux']
c.删除元素:del(delete):语法–del 列表[下标]、remove;移除某个元素(彻底删除)、pop(出栈):移除某个元素(删除之后知道删除的是谁)、clear:将列表清空。
del list1[1] print(list1) print(list1.remove('Java')) print(list1) print(list1.pop(0)) print(list1) list1.clear() print(list1) # ['python', 'HTML5', 'Java', 'Linux'] # None # ['python', 'HTML5', 'Linux'] # python # ['HTML5', 'Linux'] # []
下标和切片
下标:每个元素在列表中的位置。
正向下标,从0开始
负向下标,从-1开始
list1 = ['蜘蛛侠','环太平洋','海王','复仇者联盟']
print(list1[1],list1[-3])
#环太平洋 环太平洋
下标不能越界
list1[100]
# IndexError: list index out of range
切片:左闭右开区间:从原来的容器中提取元素组成新的容器
切片可以越界。
print(list1[1:3])
#['环太平洋', '海王']
变量[M,N,step],M:起始范围(默认从头开始取,0),N结束范围(默认取到尾),step:步长(默认step=1)。
-
起始范围和结束范围不写的时候冒号必须存在,步长不写时,冒号可省略。
-
步长控制获取的元素,每间隔步长-1个元素获取一个元素(获取的当前元素加上步长 = 下一个要获取的元素)。
print(list1[1:4:2]) print(list1[:3:2]) print(list1[::2]) print(list1[:]) print(list1[::-1]) # 倒序输出 print(list1[4:1]) # ['环太平洋', '复仇者联盟'] # ['蜘蛛侠', '海王'] # ['蜘蛛侠', '海王'] # ['蜘蛛侠', '环太平洋', '海王', '复仇者联盟'] #['复仇者联盟', '海王', '环太平洋', '蜘蛛侠'] # []
-
M和N必须同符号:step>0,M<N;step<0,M>N.
print(list1[0:-1]) #['蜘蛛侠', '环太平洋', '海王']
-
正向下标和负向下标可组合使用
练习:
movies = ['阿甘正传','肖申克的救赎','霸王别姬','三傻大闹宝莱坞','环太平洋','猿人泰山']
a.获取[‘阿甘正传’、‘霸王别姬’、‘环太平洋’]
print(movies[::2])
b.获取[‘肖申克的救赎’、‘环太平洋’]
print(movies[1::3])
c.获取[‘环太平洋’、‘霸王别姬’、‘阿甘正传’]
print(movies[-2::-2])
d.获取[‘猿人泰山’、‘阿甘正传’]
print(movies[::-5])
e.获取[‘霸王别姬’]
print(movies[2:3]) / a = [] a.append(movies[2]) print(a) / b = [movies[2]] print(b)
列表的遍历
循环(遍历):
movies = ['阿甘正传','肖申克的救赎','霸王别姬','三傻大闹宝莱坞','环太平洋','猿人泰山']
-
直接遍历
for i in movies: print(i)
-
间接遍历
len()查看容器的长度
print(len(movies)) for i in range(len(movies)): print(movies[i])
-
enumerate():将列表转换为一个可迭代对象(for循环)
print(enumerate(movies)) #<enumerate object at 0x000001EF0B136E10>
for i in enumerate(movies): print(i) # (0, '阿甘正传') # (1, '肖申克的救赎') # (2, '霸王别姬') # (3, '三傻大闹宝莱坞') # (4, '环太平洋') # (5, '猿人泰山')
练习:将下方列表中的元素从小到大排序(冒泡排序)
排序:list1 = [23,56,10,55,76,100,30]
[23,10,55,56,76,30,100]
[10,23,55,56,30,76,100]
[10,23,55,30,56,76,100]
[10,23,30,55,56,76,100]#外层循环控制趟数 for i in range(1,len(list1)): print(f'这是第{i}趟排序') print('每趟排序开始前:',list1) for j in range(len(list1)-i): print('每次排序的两个元素:',list1[j],list1[j+1]) if list1[j] > list1[j+1]: list1[j],list1[j+1] = list1[j+1],list1[j] #打印每一趟排序的结果 print(list1) # 这是第1趟排序 # 每趟排序开始前: [23, 56, 10, 55, 76, 100, 30] # 每次排序的两个元素: 23 56 # [23, 56, 10, 55, 76, 100, 30] # 每次排序的两个元素: 56 10 # [23, 10, 56, 55, 76, 100, 30] # 每次排序的两个元素: 56 55 # [23, 10, 55, 56, 76, 100, 30] # 每次排序的两个元素: 56 76 # [23, 10, 55, 56, 76, 100, 30] # 每次排序的两个元素: 76 100 # [23, 10, 55, 56, 76, 100, 30] # 每次排序的两个元素: 100 30 # [23, 10, 55, 56, 76, 30, 100] # 这是第2趟排序 # 每趟排序开始前: [23, 10, 55, 56, 76, 30, 100] # 每次排序的两个元素: 23 10 # [10, 23, 55, 56, 76, 30, 100] # 每次排序的两个元素: 23 55 # [10, 23, 55, 56, 76, 30, 100] # 每次排序的两个元素: 55 56 # [10, 23, 55, 56, 76, 30, 100] # 每次排序的两个元素: 56 76 # [10, 23, 55, 56, 76, 30, 100] # 每次排序的两个元素: 76 30 # [10, 23, 55, 56, 30, 76, 100] # 这是第3趟排序 # 每趟排序开始前: [10, 23, 55, 56, 30, 76, 100] # 每次排序的两个元素: 10 23 # [10, 23, 55, 56, 30, 76, 100] # 每次排序的两个元素: 23 55 # [10, 23, 55, 56, 30, 76, 100] # 每次排序的两个元素: 55 56 # [10, 23, 55, 56, 30, 76, 100] # 每次排序的两个元素: 56 30 # [10, 23, 55, 30, 56, 76, 100] # 这是第4趟排序 # 每趟排序开始前: [10, 23, 55, 30, 56, 76, 100] # 每次排序的两个元素: 10 23 # [10, 23, 55, 30, 56, 76, 100] # 每次排序的两个元素: 23 55 # [10, 23, 55, 30, 56, 76, 100] # 每次排序的两个元素: 55 30 # [10, 23, 30, 55, 56, 76, 100] # 这是第5趟排序 # 每趟排序开始前: [10, 23, 30, 55, 56, 76, 100] # 每次排序的两个元素: 10 23 # [10, 23, 30, 55, 56, 76, 100] # 每次排序的两个元素: 23 30 # [10, 23, 30, 55, 56, 76, 100] # 这是第6趟排序 # 每趟排序开始前: [10, 23, 30, 55, 56, 76, 100] # 每次排序的两个元素: 10 23 # [10, 23, 30, 55, 56, 76, 100]