'''list常用函数''' from typing import List a = [66.25,3333,333,1,123456] #定义变量,以列表的形式 print(a.count(333),a.count(66.25),a.count('n')) #count的作用为显示表中相同的值的个数 a.insert(3,-1) #insert的用处是在表中的第3个值的后面插入一个值为-1 a.append(333) #append的用处是在表的最后面插入一个新值 a a.index(333) #返回表中值为333的元素个数,如果值在表中不存在,执行之后报错 a.remove(333) #删除列表中值为333的第一个元素,如果值不存在则会报错 a.reverse() #反转列表中的所有元素顺序 a.sort() #对列表中的元素进行排序,从小到大 a.pop() #删除列表中最后一个元素,并且打印出它的值 a.pop(0) #从最前方开始删除元素,并且打印 b = [123,456,789,1011] a.extend(b) #一次性在列表后方加入另外一个列表 '''列表推导算式''' vec = [3,6,9] [3*x for x in vec] #使用for将列表内的各个元素乘3,这里的x相当于改变之前的vec [[x, x ** 2] for x in vec] #对vec进行多次推算,这里进行了两次,在内部的[]中,完成后把所有的推算结果写道vec中 fresh = ['banana','apply','fruit'] [i.strip() for i in fresh] #将fresh的值定义到i中 [3*i for i in vec if i > 3] #对vec进行推算,if定义只推算列表中原值大于3的元素 [3*i for i in vec if i < 4] [(x,x**2) for x in vec] #创建元组时可以不使用括号,但是在内部进行多次推算必须加上()不然报错,或者无结果 # 使用嵌套的方式使两个表进行推算 list1=[4,5,6,7] list2=[6,5,-4,7] [x*y for x in list1 for y in list2] #与下面的循环效果一样 listall = [ x * y # 推算式 for x in list1 # 当本循环执行完成,以列表的形式打印 for y in list2 # 当x第一次循环,输出为[4x6,4x5,4x-4,4x7]的结果 ] print(listall) list3=[4,5,6] #range(len())一个比较复杂的语法 [ list1[i]*list2[i] #推算时引用i的值,比如list1和2本来时4个元素,但是他们使用了list3的元素数,所以推算时只有它们前面三个元素相乘 for i in range(len(list3)) #可以理解为摘取list1的元素数,赋值到i中 ] #配合round使用 [ str(round(355/113,i)) #round函数可以定义小数点后的数位,比如为1时小数点后显示一位,剩余的数四舍五入 for i in range(1,6) #定义i值为1-5,每次循环+1 ] '''嵌套列表推导式''' #嵌套列表创建格式 mat = [ [1,2,3], #创建好后直接打印的话,内容还是一行,看不出行和列的关系 [4,5,6], [7,8,9], ] print(mat) #交换行和列,使在一列中的元素,输出到一个元组中 print([ [row[i] for row in mat] #定义row为mat的元素,然后通过定义好的i位置变量获取row中位置在一列的元素,输出到一个元组中 for i in [0,1,2] #定义i为表中的位置变量 ]) #以上效果也可以使用zip函数实现 list(zip(*mat)) #zip函数将mat中的三个元组拆分开,将每个元组中位置对应的元素打包到一个新的元组中