Python 基础教程:列表(第9篇)
什么是列表?
在python中列表(list)是一种有序、可变的数据类型,可以存储任意类型的对象(整数、浮点数、字符串甚至其他列表),使用方括号[]定义,元素之间用逗号分隔。
特点:
有序:每个元素都有固定的位置(索引)。
可变:可以增、删、改元素。
异构:可以存放不同类型的数据。创建列表
""" 使用list()函数创建 使用[]创建 列表推导式创建: 格式:my_list=[i for i in 可迭代的] 格式:my_list=[i for i in range() if 表达式] 注意:列表推导式虽然简洁,但不要过度嵌套(最多两层),否则可读性会下降。 """# 函数创建列表my_list=list()my_list1=list([1,2,3])# []创建列表my_list2=[]my_list3=["牛奶","鸡蛋","面包"]# 列表推导式my_list4=[iforiinrange(10)]# [0,1,2,3,4,5,6,7,8,9]my_list5=[pow(i,2)foriinrange(7)]# [0,1,4,9,16,25,36]my_list6=[[i-1,i+1]foriinrange(1,7)]# [[0,2],[1,3],[2,4],[3,5],[4,6],[5,7]]- 访问列表
# 遍历列表my_list=[iforiinrange(10)]# 直接遍历元素foreachinmy_list:print(each)# 输出0 1 2 3 4 5 6 7 8 9# 通过索引遍历foriinrange(len(my_list)):print(my_list[i])# 输出0 1 2 3 4 5 6 7 8 9""" 索引从左往右是从0开始 索引从右往左是从-1开始 注意不要越界 each: A B C D E F index: 0 1 2 3 4 5 index: -6 -5 -4 -3 -2 -1 """# 通过索引访问my_list=["A","B","C","D","E","F"]print(my_list[0])# 输出"A"print(my_list[3])# 输出"D"print(my_list[8])# 报错IndexError: list index out of range,下标越界了# 访问列表最后一个元素print(my_list[-1])# 输出"F"print(my_list[len(my_list)-1])# 输出"F"# [start:end:step] start开始下标,end结束下标,不包括end,step表示步长,步长负数表示从右往前数print(my_list[:3])# 输出['A', 'B', 'C']print(my_list[::2])# 输出['A', 'C', 'E']print(my_list[-2::-2])# 输出['E', 'C', 'A']- 添加元素
""" append(element)在列表末尾添加一个元素 insert(index, element)在列表指定位置添加一个元素 extend(iterable)在列表末尾将一个可迭代对象的所有元素追加到末尾 """# append()my_list=["牛奶","鸡蛋","面包"]my_list.append("西红柿")print(my_list)# 输出['牛奶', '鸡蛋', '面包', '西红柿']my_list.append([1,2,3])print(my_list)# 输出['牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3]]# insert()my_list.insert(0,"西瓜")print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3]]my_list.insert(len(my_list),"苹果")print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3], '苹果']# extend()# 列表中只有一个元素my_list.extend(["helloworld"])print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3], '苹果', 'helloworld']# 字符串中有多个元素分开添加my_list.extend(("helloworld"))print(my_list)# 输出['西瓜', '牛奶', '鸡蛋', '面包', '西红柿', [1, 2, 3], '苹果', 'helloworld', 'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']- 修改元素
""" 4.修改元素 """my_list=["牛奶","鸡蛋","面包"]# 通过索引修改my_list[2]="西红柿"# 输出['牛奶', '鸡蛋', '西红柿']print(my_list)# 通过切片修改,把等号左边的元素删除,把等号右边的可迭代对象插入到列表中my_list[0:len(my_list)]=[1,2,3]# 输出[1, 2, 3]print(my_list)# 通过列表推导式my_list=[iforiinrange(10)ifi%2]# 输出[1, 3, 5, 7, 9]print(my_list)- 删除元素
""" 5.删除元素 remove(value)删除第一个匹配的元素,如果元素不存在会报错 pop(index)删除并且返回指定索引的元素,不传参默认删除最后一个元素 clear()清空所有元素 del 切片 """# remove()my_list=[1,2,1,3,4,5]my_list.remove(1)# 输出[2, 1, 3, 4, 5]print(my_list)# pop()r=my_list.pop(3)# 输出[2, 1, 3, 5]print(my_list)# 输出4print(r)# clear()my_list.clear()# 输出[]print(my_list)# delmy_list1=[1,2,3,4,5,6,7,8]# 删除索引为0的元素delmy_list1[0]# 输出[2, 3, 4, 5, 6, 7, 8]print(my_list1)# 删除切片delmy_list1[:3]# 输出[5, 6, 7, 8]print(my_list1)# 删除变量delmy_list1# 报错NameError: name 'my_list1' is not definedprint(my_list1)# 切片my_list2=[1,2,3,4,5,6]# 重新赋值my_list2[:3]=["jack","rose"]# 输出['jack', 'rose', 4, 5, 6]print(my_list2)# 清空列表my_list2[:]=[]# 输出[]print(my_list2)# 列表推导式重新赋值my_list3=[1,23,4,5,6,91]my_list3=[iforiinmy_list3ifi%2==0]# 输出[4,6]print(my_list3)- 其他方法
""" 6.其他方法 index(value, start, end)查找元素首次出现的索引,不存在会报错 count(value)统计元素出现的个数 sort(key=None, reverse=False)原地排序,默认升序,没有返回值 reverse()原地反转列表顺序,没有返回值 in,not in判断元素是否在列表中 """# index()my_list=[10,20,30,20]# 输出1print(my_list.index(20))# 指定搜索范围,输出3print(my_list.index(20,2,len(my_list)))# count()# 输出2print(my_list.count(20))# sort(),默认升序my_list.sort()# 输出[10, 20, 20, 30]print(my_list)# 降序my_list.sort(reverse=True)# 输出[30, 20, 20, 10]print(my_list)# reverse()my_list1=[10,20,30,20]my_list1.reverse()# 输出[20, 30, 20, 10]print(my_list1)