[外链图片转存失败(img-4puK9rIt-1567578572671)(https://i.loli.net/2019/05/26/5ceab3e775ed160686.png)]
# reverse,反转list list1 = [1,2,3] print("===="*5,"反转list") print("列表打印",list1) list1.reverse() print("列表打印",list1) # sort 排序,默认升序 list1 = [11,200,3] print("列表打印",list1) list1.sort() print("列表打印",list1) list1.sort(reverse=True)# 注意:按照降序排,sort指定reverse=True print("列表打印",list1) #求长度 print("===="*5,"求长度len") list1 = [11,200,3] print("长度:",len(list1)) #+:它主要实现的是多个列表之间的拼接 #*:主要实现的是列表的复制和添加 #比较>,<:主要进行数据型列表的元素比较 #and等:;逻辑运算符,可以进行列表之间的逻辑判断 #列表的运算 加法 #效率低于extend print("===="*5,"列表的运算:加法") list1 = [1,2,3] list2 = [4,5,6] list3 = list1 + list2 #list4 = list3 - list1 没有减法 print("列表打印list3:",list3) #列表的运算 乘法 print("===="*5,"列表的运算:乘法") list4 = list1*3 print("列表打印list4:",list3) #列表大小比较 print("===="*5,"列表大小比较") import operator a = [1,2,3] b = [1,2,3] c = [1,2,0] print(operator.lt(c,b)) #相当于a<b less than 从第一个数字或字母(ASCII)比大小 print(operator.le(c,b)) #相当于a<=b less and equal print(operator.eq(a,b)) #相当于a==b equal 字母完全一样,返回True, print(operator.ne(c,b)) #相当于a!=b not equal print(operator.gt(a,c)) #相当于a>b greater than print(operator.ge(a,c)) #相当于a>=b greater and equal #最大值最小值及其所在位置 print("===="*5,"最大值最小值及其所在位置") a = [1,2,3] print("最大值:",max(a)) print("最大值所在位置:",a.index(max(a))) print("最小值:",min(a)) print("最小值所在位置:",a.index(min(a))) #============================================================================ # 二维数组 print("===="*5,"二维数组") list2 =[1,2,[31,32]]#实际是个长度为三的list list2[2]为又一个list print("二维数组列表打印list2:",list2) print("len of list2:",len(list2)) print("list2[0]:",list2[0]) print("list2[1]:",list2[1]) print("list2[2]:",list2[2]) print("list2[2][0]:",list2[2][0]) print("list2[2][1]:",list2[2][1]) list2 =[[1,2],[31,32]]#实际是个长度为三的list list2[2]为又一个list print("二维数组列表打印list2:",list2) print("len of list2:",len(list2)) print("list2[0]:",list2[0]) print("list2[0][0]:",list2[0][0]) print("list2[0][1]:",list2[0][1]) print("list2[1]:",list2[1]) print("list2[1][0]:",list2[1][0]) print("list2[1][1]:",list2[1][1]) # 三维数组 print("===="*5,"三维数组") list3 =[2,5,[1,7,[0,10]]]#实际是个长度为三的list list3[2]为又一个list print("三维数组列表打印list3:",list3) print("len of list3:",len(list3)) print("list3[0]:",list3[0]) print("list3[1]:",list3[1]) print("list3[2]:",list3[2]) print(list3[-1][-1][-1]) # 打印最后一个 # 合并两个数组extend print("===="*5,"合并两个数组extend") list2 =[[1,2],[31,32]] list2.extend(list3) print("列表打印list2:",list2) print("len of list2:",len(list2)) print("===="*5,"合并两个数组append") list2 =[[1,2],[31,32]] list2.append(list3) print("打印list2:",list2) print("len of list2:",len(list2)) #============================================================================ # 循环 print("===="*5,"循环") list1 = [[1] for i in range(3) ] print("打印list1:",list1) list1[0].append(3) list1[1].append(5) list1[2].append(7) print("打印list1:",list1) print("===="*5,"循环") list1 =['ele0','ele1','ele2'] for ele in list1: #如果直接for循环一个list的时候,那面每次循环的值是这个list里面的元素,换行打印list数组里面的元素 print(ele) # 循环,同时打印索引和数组值enumerate(枚举),必须含有两个参数 print("===="*5,"循环enumerate(枚举)") for index, item in enumerate(list1):#i,v随意注册的变量 print ("index = %s,value = %s" % (index, item)) # index = 0,value = cm1 print("===="*5,"循环range") for i in range(len(list1)): print ("index = %d,value = %s" % (i, list1[i])) # 注意:循环list时,不能有删除的操作,因为一旦删除一次,list就变化,如下:删除所有奇数 # 错误写法 #在进行删除后 list数据变少更新之后 迭代器可能仍然按照原来的地址进行迭代寻址 print("===="*5,"删除操作错误写法") list1 = [1,1,2,3,4,5,6,7,8,9] for ele in list1: print("this turn ele is :",ele) if ele%2!=0: list1.remove(ele) print("after remove list is:",list1) print("打印list1:",list1) print("===="*5,"删除操作错误写法浅拷贝") list1 = [1,1,2,3,4,5,6,7,8,9] list2 = list1 # 注意:不能用list2=list1,指针一样 # 注意:list2=list1浅拷贝 # 注意:list2 =list1[:]深拷贝 # 深浅拷贝的区别,内存地址是否变化 参考下面的打印地址部分 for ele in list2: print("this turn ele of list2 is :",ele) if ele%2!=0: list1.remove(ele) print("after remove list1 is:",list1) print("打印list1:",list1) # 正确写法 # remove(),()中是值 print("===="*5,"删除操作正确写法") list1 = [1,1,2,3,4,5,6,7,8,9] list2 = list1[:] for i in list2: if i%2!=0: list1.remove(i) print("打印list1:",list1) print("打印list2:",list2) # 打印list的地址id() print("===="*5,"打印list的地址id") list1 = [1,2,3,4,5,6,7,8,9] list2 = list1 list3 = list1[:] print("打印list1:",list1) print("打印list2:",list2) print("打印list3:",list3) print("List1地址:",id(list1)) print("List2地址:",id(list2)) print("List3地址:",id(list3)) #============================================================================ # 切片:list取值的一种方式,顾头不顾尾 print("===="*5,"list的切片(顾头index不顾尾index)") list1 = [1,2,3,4,5,6,7,8,9] print("打印list1:",list1) slice_list1 = list1[0:1] #取list1[index1]直到list1[index2],不取list1[index2] print("打印slice_list1=list1[0:1]:",slice_list1) slice_list2 = list1[:3] # 如果切片前面一个值不写的话 从开头开始取 直到list1[index1] 不取list1[index1] print("打印slice_list2=list1[:3]:",slice_list2) slice_list3 = list1[3:] # 如果切片后面一个值不写的话 从list1[index1]开始取 直到末尾 取末尾 print("打印slice_list3=list1[3:]:",slice_list3) slice_list4 = list1[:] # 如果切片前面后面的值都不写的话,全部取出来 print("打印slice_list4=list1[:]:",slice_list4) #切片之后地址均不一样 print("list1地址 :",id(list1)) print("slice_list1地址:",id(slice_list1)) print("slice_list2地址:",id(slice_list2)) print("slice_list3地址:",id(slice_list3)) print("slice_list4地址:",id(slice_list4)) #插入新值 print("===="*5,"list的切片插入新值") list1 = [1,10,100,1000] print("打印list1:",list1) list1[1:1] = [2,3,4] print("打印list1:",list1) print("===="*5,"list的切片删除元素") #删除元素 list1[1:4] = [] print("打印list1:",list1) # 步长,常用概率高:间隔几个取一个 print("===="*5,"list的切片(步长)") list1 = [1,2,3,4,5,6,7,8,9] #new_slice_list = list1[index1:index2:step] # 从index1取到index2,步长为step slice_list1 = list1[::1] slice_list2 = list1[::2] slice_list3 = list1[::3] print("步长是正数时,从左往右取") print("步长1:",slice_list1) print("步长2:",slice_list2) print("步长3:",slice_list3) #不够则结束 slice_list_1 = list1[::-1] slice_list_2 = list1[::-2] slice_list_3 = list1[::-3] print("步长是负数时,从右往左取") print("步长-1:",slice_list_1) print("步长-2:",slice_list_2) print("步长-3:",slice_list_3) new_slice_list1 = list1[1:5:1] print("start: 1 end: 5 step: 1:",new_slice_list1)#用的频率低,最后是-1,代表从右向左取值,小标依次为-1、-2、-3,取头不取尾,所以不取-3的值 new_slice_list2 = list1[-1:-5:-1] print("start:-1 end:-5 step:-1:",new_slice_list2)#用的频率低,最后是-1,代表从右向左取值,小标依次为-1、-2、-3,取头不取尾,所以不取-3的值 new_slice_list3 = list1[1:5:-1] print("start: 1 end: 5 step:-1:",new_slice_list3)#用的频率低,最后是-1,代表从右向左取值,小标依次为-1、-2、-3,取头不取尾,所以不取-3的值 #============================================================================ #特殊方法初始化列表 print("===="*5,"特殊方法初始化列表") list1 = [6]*5 print("打印list1:",list1) list1 = [6 for i in range(0, 5)] print("打印list1:",list1) list1 = [[] for i in range(0, 5)] print("打印list1:",list1) list1 = [i+1 for i in range(0, 5)] print("打印list1:",list1) list1 = [i+1 for i in range(0, 5)] print("打印list1:",list1) list1 = [[i for i in range(0, 5)] for j in range(5)] print("打印list1:",list1) list1 = [(i, j) for i in range(0,5) for j in range(0,5) ] print("打印list1:",list1) list1 = [ele for ele in [(i, j)for i in range(5) for j in range(5)]] print("打印list1:",list1)