# 一、列表 """ 性质: 1.列表,容器符号:[],数据类型:list 2.列表是有序的数据类型(每个元素有自己固定的位置,"下标") 3.列表是可变的(对列表中元素进行增删改操作) 4.列表中可以保存任意类型的数据 5.列表中允许出现重复元素的 """ # 二、列表的运算 list1 = [] # 空列表 list2 = list() # 通过构造器语法创建空列表 print(list1, list2, list1 == list2) list3 = [1, 1.1, True, 'abcd', [123], None, (1, 2, 3), {'name': 20}, {1, 2, 3}] print(list3) # a.列表的拼接(生成一个新列表) print(list3 + list3) # b.列表的重复(生成一个新列表) print(list3 * 5) # c.成员运算:in、not in print('abcd' in list3) print('bcda' not in list3) print(1 in list3) print([1] in list3) print('--------------------分割线------------------------') # d.比较运算:列表之间可以比较大小 # 容器型数据类型比较大小比较的是相同位置的第一对相同数据类型不同子元素的大小 list4 = [1, 2, 3, 4] list5 = [1, 2, 4, 5] print(list4 > list5) list6 = [1, 2, 3, 4] list7 = [1, 2, 4, 3] print(list6 == list7)
# 列表 list1 = ['英雄联盟', 'CS:GO', '超级马里奥', '原神', '魂斗罗', '王者荣耀', 'PUBG'] # 列表中每个元素都有自己的位置(下标) # 下标分为正向下标、负向下标 # 正向下标:从左向右数,从0开始 # 负向下标:从右向左,从-1开始 # 二、通过下标获取元素:有序容器[下标数字] print(list1[2] == list1[-5]) print(list1[2]) print(list1) print('---------切片----------') # 三、切片:获取有序容器中某一部分元素,得到的结果是和原容器相同类型的容器 # a.有序容器[M:N:step] ---> 左闭右开[M,N) # b.切片中正向下标和负向下标可以混用 # c.切片中开始和结束下标都不写,表示从头取到尾 # d.开始不写,结束写,表示从头取到指定下标;反之,从指定下标取到末尾 # e.切片只写一个冒号,代表step=1 # 注意:切片参考range() print(list1[0:7]) print(list1[0:7:3]) print(list1[1:-2:3]) print(list1[-1:-8:-1]) print(list1[:]) print(list1[::-1]) print(list1[::-3]) # 练习: list1 = ['英雄联盟', 'CS:GO', '超级马里奥', '原神', '魂斗罗', '王者荣耀', 'PUBG'] # 1.获取['英雄联盟','PUBG'] print(list1[0:7:6]) print(list1[-7::6]) # 2.获取'原神' print(list1[3]) # 3.获取['王者荣耀','原神','CS:GO'] print(list1[-2:-7:-2]) # 4.获取['魂斗罗','原神','超级马里奥'] print(list1[-3:1:-1]) print(list1[-3:-6:-1]) # 通过下标获取元素,下标不能越界。 # print(list1[100]) # IndexError: list index out of range # 在切片中允许下标越界 print(list1[1:100000000])
list1 = ['A', 'B', 'C', 'D', 'C'] # 1.直接遍历 for i in list1: print(i) # 2.间接遍历:通过下标遍历 # len():获取有序容器的长度 print(len(list1)) for index in range(len(list1)): print(f'{index}-->{list1[index]}') # 3.enumerate():能够将列表中的每个元素及其下标放到一个元组中,多个元组组成一个可迭代对象 # 可迭代对象(能够做遍历) print(enumerate(list1)) for content in enumerate(list1): print(content)
list1 = ['Java', 'Python', 'C'] # 增 # append:追加,向列表的末尾添加元素 list1.append('HTML') print(list1) # insert:插入,向列表的任意位置添加元素 list1.insert(0, 'C++') print(list1) # extend:追加,从一个容器中将所有元素添加到列表中 list1.extend('123') list1.extend(['Golong', 'ui']) print(list1) # 改 # 有序容器[下标] = 值 list1[5] = 'Java' print(list1) # 删 # del:del 有序容器[下标] del list1[6] print(list1) # remove:根据元素删除,从左向右删除,如果某个元素重复,一次只删除一个 list1.remove('3') print(list1.remove('Java')) print(list1) # pop:如果不给pop指定元素,删除的是列表中最后一个元素;或者给pop指定下标 # pop方法可以告诉你删除的是那个元素 list1.pop() print(list1) print(list1.pop(0)) print(list1) # clear list1.clear() print(list1) # 练习: # 删除列表中重复元素。 list2 = ['A', 'A', 'B', 'B', 'A']
# 一、查找列表中元素:index # index方法默认从左向右查找,找到元素立即停止查找,返回下标。 # 可以指定index开始查找元素的位置。index找不到元素报错 list1 = ['Java', 'Python', 'Java'] result = list1.index('Java') print(result) result1 = list1.index('Java', 1) print(result1) # 二、sum、max、min - 操作对象必须是数字列表(列表中元素全是数字) num_list = [1, 2, 3, 4, 5] print(sum(num_list)) print(max(num_list)) # print(5 > 'a') # TypeError: '>' not supported between instances of 'int' and 'str' # 三、reverse:将列表倒序,直接对列表本身修改 num_list = [1, 2, 3, 4, 5] num_list.reverse() print(num_list) # 四、sort、sorted:对列表排序 # sort默认升序排序,修改列表本身。如果reverse=True,降序排序 list2 = [2, 5, 1, 7, 0] list2.sort() list2.sort(reverse=True) print(list2) # sorted:默认升序排序,如果reverse=True,降序排序 list3 = [2, 5, 1, 7, 0] print(sorted(list3), list3) print(sorted(list3, reverse=True), list3) # 五、count:统计某个元素出现次数 list3 = [2, 5, 1, 7, 0] print(list3.count(2)) print(list3.count(9))
# 列表推导式(列表生成式) # 生成有元素的列表(在某些场景下能替代append) # 性能比较:列表推导式 > append # 一、语法1 # [表达式 for 变量 in 容器] # 将100以内5的倍数添加到列表中。 list1 = [] for i in range(0, 101, 5): list1.append(i) print(list1) list2 = [i for i in range(0, 101, 5)] print(list2) # 将某个元素在列表中重复N次 # 如果for中变量没有实际意义,可以使用下划线"_"代替 list3 = [[1, 2, 3] for _ in range(10)] print(list3) # 二、语法二 # [符合条件的表达式 for 变量 in 容器 if 条件] list4 = [i for i in range(101) if i % 5 == 0] print(list4) list5 = [True if i % 5 == 0 else False for i in range(11)] print(list5) # 三、语法三 # [表达式 for 变量1 in 容器1 for 变量2 in 容器2] list6 = [f'{i} * {j} = {i * j}' for i in range(1, 10) for j in range(1, i + 1)] print(list6) # 使用列表推导式生成5个人的3科成绩 import random score = [ [random.randint(0, 100) for _ in range(3)] for _ in range(5) ] print(score) # 代码换行 num = 1 \ + \ 2 \ + \ 3 + \ 4 + 5 + 6 + \ 10 print(num)