列表 列表的元素可以任意操作,更删改查,是操作起来很方便的一种数据类型 是以一对中括号括起来的数据,值之间通过逗号隔开 列表里的数据项不需要具有相同的数据类型,不同数据类型依然可以进行存储 1.元组强制转换为列表 tt = (1,2,3) print(list(tt))#理解为数据类型的转换,比如字符串里的整数强制转换为整型 ======>[1, 2, 3] 2.列表的创建 list1 = [1,3,'x','y'] #创建一个混和类型的列表 list2 = [] #创建一个空列表 3.列表元素的增加 3.1 append方法,向一个列表中添加一个对象,可以是一个元素,可以是列表、元组等 list1 = [1,2,'x'] list1.append('Add') #在列表的最后加上元素 print(list1) ======>[1, 2, 'x', 'Add'] append 方法就是简单的将一个对象置于列表的后面 3.2 insert方法,指定位置添加数据,对已有数据的位置就是修改,对没有数据的索引,就是新增 list1 = [1,2,'x'] list1.insert(3,'xx') #新增数据 list1.insert(1,'xx') #修改数据 3.3 extend将一个列表附加到另一个列表上 list1 = [1,2,'x'] list2 = ['add'] list1. list1.extend(list2) #将一个列表附加到另一个列表,元素不去重 =====>[1, 2, 'x', 'A', 'd', 'd'] #因为extend只接收list,所以将其拆分 而extend方法只能接收list,且把这个list中的每个元素添加到原list中。 3.4 + 加号,将两个list相加,会返回到一个新的list对象,注意与前三种的区别 list1 = [1,2,'x'] list2 = ['add'] list3 = list1 + list2 前面三种方法(append, extend, insert)可对列表增加元素的操作,他们没有返回值,是直接修改了原数据对象。 注意:将两个list相加,需要创建新的list对象,从而需要消耗额外的内存,特别是当list较大时,尽量不要使用“+” 来添加list,而应该尽可能使用List的append()方法。 4.查询 通过索引、切片进行查看 list1[1::1] list1[-1::-1] #从右向左,反向输出 list2[0:3] #从左到右,正向输出 print(list1[1]) 5.修改 通过索引、切片进行修改 list1[1]='a' #通过索引,修改某个元素 list1[0:2]=['a','b'] #通过切片,修改多个元素 list1[0:2]=['a'] #通过切片修改多个元素时,若没有足够的元素值进行赋值,没有值的就会被删除 6.删除 6.1 del 删除整个对象 del list1 #删除这个对象 del list1[0] #删除列表中索引所对应的对象 del list1[0:2] #删除列表中切片所对应的多个对象 6.2 remove删除某个对象,无返回值 list1.remove(list1[0]) #不能一次删除多个,即不能通过切片进行删除 print(list1) 6.3 clear清空列表中元素,列表显示为空列表 list1.clear() 6.4 pop 删除索引所对应的元素,并返回被删除的元素,移除列表中的一个元素(默认最后一个元素) list1.pop(1) #参数为索引,不是对象 a = list1.pop(1) #返回被删除的元素,有时候需要对删除的元素进行特殊处理,即可以使用pop方法 list1.pop() print(list1) #若没有给出索引值,默认删除最后一个元素 7.count 返回元素个数 list1.count('x') #参数为一个元素对象值,返回该元素在列表中出现的个数或次数 8.index返回索引 k = list1.index('x',2,4) #指定查找索引的位置为2-4,找到第一个元素为'x',的索引值 k2 = list1.index('x') # 指定查找的元素,返回索引值 k = list1.index('x',3) #没有指定结束索引,表示从指定的开始索引一直到列表的最后一个元素 如果没有找到,程序报错,返回:'x' is not in list 出现的一个错误: k = list1.index('x',start=3) 程序报错: k = list1.index('x',start=3) TypeError: index() takes no keyword arguments 表示参数写错了,不能写带关键字的参数 9.max 返回列表中元素的最大值 当列表元素为混合元素,即有整型、字符串时,使用max会报错 list1 = [1,2,'x',2,3,'x'] k = max(list1) TypeError: '>' not supported between instances of 'str' and 'int' 应该是只能对同类型的数据进行比较 list2 = [1,2,3,2] list3 = ['k','a'] k = max(list2) k = max(list3) 10.min返回列表中元素的最小值,与max 的用法相同 11.sort 排序,默认从小到大,如果想要从大到小,就需要加上reverse = True 1. 由于sort没有返回值,不能直接进行输出print(list1.sort()) 2. sort排序后,是对原来列表的更新顺序,所以本身的列表发生了改变 list2.sort() print(list2)#输出的时候,就是从小到大的顺序输出 list2.sort(reverse=True) print(list2) #输出的时候,就是从大到小的顺序进行输出 list3 = ['a','X','B'] list3.sort(reverse=True) print(list3) =====>['a', 'X', 'B'] 是按ascii码的大小进行排序的 3.也不能多种数据类型进行排序,比如列表中有字符、有整型,这时候进行sort就会报错 '<' not supported between instances of 'str' and 'int' 4.sorted 有返回值,可以直接进行输出;本身列表的顺序没有被改变 print(sorted(list2)) 12. 判断某个元素是否存在于列表中 1.通过判断索引是否存在,不过如果不存在索引,程序报异常,不建议使用 k = list2.index(7) print(k) 2.通过判断count是否为0 k = list2.count(7) print(k) 3.通过in进行判断 3 in list1 #返回布尔值 print( 6 in list2) 13.len()判断列表的长度,即元素的个数 len(list1) print(len(list2)) 14.reverse 列表反转,没有返回值,列表本身的顺序进行改变 list2.reverse() print(list2) 15.sum 列表中元素的和 list2 = [1,2,3,2,6] print(sum(list2)) #必须保证里面的元素的类型都是int,不能有其他类型,不能有二维列表 16.一维遍历 for i in list1: #第一种 循环输出 print(i) for i,v in enumerate(list2): #第二种 使用内置函数,并输出序号 print(i,v) for i in range(len(list2)): #第三种,参考索引进行输出 print(list2[i]) for i in iter(list2): #第四种,使用迭代器进行输出 print(i) 17.二维遍历 list1 = ['2',('3','5'),'1',['x','y','z']] for i in range(len(list1)): for j in range(len(list1[i])):#当列表中元素为非int型时,可以这样进行 print(list1[i][j]) #对含有整型的列表进行上一种方法进行遍历时,报错TypeError: object of type 'int' has no len() list1 = [1,2,3,[2,3,'x'],[4,5,6]] for i in list1: if type(i) != type(2): # type类型返回的是个对象,所以用个整型的对象去做判断 for j in i: print(j) else: print(i) 18.遍历多个列表 list1 = ['1', '1'] list2 = ['A','B'] for x in list1, list2: #对列表系列依次遍历 reslut = x[:] #接收一个列表,最后的列表覆盖前面的列表 print(reslut) for x in list1, list2: reslut2 = x[:] #接收一个列表,就输出一个列表 print(reslut2) 19.去重 set(list2)将重复的元素进行去重