列表
本文主要内容:
要点:通过print(dir(list))来查看列表的所有方法,然后通过help(list.index)、help(list.sort) 等查看帮助文档,这样就可以快速了解列表的每一个函数的用法
一、创建列表
#使用中括号扩起一堆数据就可以了,中间用逗号隔开 number = [1,2,3,4,5] mix = [1,'小甲鱼',3.14,[1,2,3]] #列表可以包含任意类型的数据 #空列表 empty = []
二、添加元素
number = [1,2,3,4,5] number.append(6) #append只能一次添加一个元素 print(number) number.insert(0,7) #insert的第一个参数是位置,第二个参数是添加的元素 print(number) number.extend([8,9]) #extend方法是向列表末尾添加多个元素,但添加的必须是列表 number.extend((10,)) number.extend((11,12)) #可以是元组 print(number)
#注释
number.append() ,中间点号表示范围,append()这个方法属于一个叫number的列表对象的
三、从列表中获取元素
#通过元素的索引值(index)从列表获取单个元素。列表索引值是从0开始的 name = ['鸡蛋','鸭蛋','鹅蛋','李狗蛋'] print(name[0]) print(name[3]) (name[1],name[3]) = (name[3],name[1]) #让李狗蛋的位置和鸭蛋的位置对调 print(name)
二维数组的访问
#二维数组 list2 = ['小猪','小锚','小狗',['小甲鱼','小护士'],'小牛'] print(list2[3]) #结果 ['小甲鱼', '小护士'] print(list2[3][0]) #结果 小甲鱼
四、从列表中删除元素
remove
#通过元素的索引值(index)从列表获取单个元素。列表索引值是从0开始的 name = ['鸡蛋','鸭蛋','鹅蛋','李狗蛋'] name.remove('李狗蛋') #直接删除元素,无需知道元素的位置 print(name.remove('陈鸭蛋')) #删除不存在的元素,会报错
报错:
Traceback (most recent call last): File "D:/Program Files/PythonProgram/untitled03/xiaojiayu/列表/list1.py", line 10, in <module> print(name.remove('陈鸭蛋')) #删除不存在的元素,会报错 ValueError: list.remove(x): x not in list
del
name = ['鸡蛋','鸭蛋','鹅蛋','李狗蛋'] del name[1] #删除列表name的二个元素 print(name) del name #删除列表name
pop
name = ['鸡蛋','鸭蛋','鹅蛋','李狗蛋'] #pop()方法“弹出”元素 print(name.pop()) #默认弹出列表最后一个元素 print(name.pop(2)) #加上一个索引值为参数时,则弹出这个索引值对于的元素
五、列表分片
#列表分片 slice name = ['鸡蛋','鸭蛋','鹅蛋','李狗蛋'] # 用冒号隔开,左边是开始位置,右边是结束位置 print(name[0:2]) #结束位置上的元素不包含在列表分片里 print(name[:2]) #没有开始位置,默认从0开始 print(name[1:]) #从1开始拷贝 print(name[:]) #从0开始,拷贝整个列表
列表分片的进价玩法
#分片操作可以接收第三个参数,其代表的是步长,默认不指定时,该值为1 list1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] print(list1[0:9:2]) #结果[1, 3, 5, 7, 9] #步长为2 print(list1[::2]) #结果 [1, 3, 5, 7, 9, 11, 13, 15] #只能用于整个列表,不能用于切片 print(list1[::-1]) #结果 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] print(list1[-2:]) #打印倒数后两个元素,不建议用[-2:-1]
关于分片"拷贝”概念的补充
list1 = [1,9 ,3,12,8,4] list2 = list1[:] #拷贝list1 print(list2) #结果 [1, 9, 3, 12, 8, 4] list3 = list1 #将list1 赋值给list3 print(list3) #结果 [1, 9, 3, 12, 8, 4] list1.sort() #排序比较容易看出来差异 print(list1) #结果 [1, 3, 4, 8, 9, 12] print(list2) #结果[1, 9, 3, 12, 8, 4] print(list3) #结果 [1, 3, 4, 8, 9, 12]
结论:为一个列表指定另一个名称的做法,只是向同一列表增加一个新的标签,真正的拷贝是要使用分片的方法。

六、列表的一些常用操作

比较运算
lis1 = [123] list2 =[234] print(lis1 > list2) #结果False list3 = ['abc'] list4 = ['bcd'] print(list3 < list4) #结果True list5 = [123,456] list6 = [234,123] print(list5 > list6) #结果False
得出的结论就是:当列表包含多个元素时,默认从第一个元素开始比较,只要有一个PK赢了,就算整个列表赢了。
字符串比较也是同样的道理(字符串比较是从第一个字符对应的ASCII码值的大小)
列表的拼接
#加号(+)也叫链接操作符 list5 = [123,456] list6 = [234,123] list7 = list5 + list6 print(list7) #结果 [123, 456, 234, 123]
#建议使用extend() 方法来扩展列表
重复操作符(*)乘号
list1 = [123] print(list1 * 3) print(list1 * 5)
成员关系符 in和not in
list1 = ['小猪','小锚','小狗','小甲鱼'] print('小甲鱼' in list1) #True print('小护士' not in list1) #True list2 = ['小猪','小锚','小狗',['小甲鱼','小护士'],'小牛'] print( '小甲鱼' in list2) #False print('小护士' not in list2) #True print( '小甲鱼' in list2[3]) #True print('小护士' not in list2[3]) #False
七、列表的小伙伴们
查询出列表的所有方法
print(dir(list)) for i in dir(list): print(i) #重点是下面这些 ''' append clear copy count extend index insert pop remove reverse sort '''
连一连

count() 方法
作用是计算它的参数在列表中出现的次数
list1 = [1,2,3,4,5,5,67,7,8,9,11,1] print(list1.count(1)) # count()方法的参数是元素 print(list1.count(5))
index()方法
作用是返回它的参数在列表中的位置。list1.index(1,start,stop)一共有三个参数,第一个参数是目标(1),后面两个参数用于限定查找的范围
list1 = [1,2,3,4,5,5,67,7,8,9,11,1] #默认查询出目标元素1的第一次出现的位置 print(list1.index(1,0,12)) #第一次出现的位置是0 #如果想要查找目标元素第二次出现的位置 #用这个方法 start = list1.index(1) +1 stop = len(list1) b =list1.index(1,start,stop) print(b) #返回目标元素1第二次出现的位置是11
reverse()方法
作用是将整个列表原地翻转,就是把排最后面的放到最前面,排最前面的放到最后面的,那么排倒数第二的就排在第二,依次类推
#原地翻转 list1 = [1,2,3,4,5,5,67,7,8,9,11,1] a = list1.reverse() print(a) #结果为None print(list1) #结果 [1, 11, 9, 8, 7, 67, 5, 5, 4, 3, 2, 1]
sort()方法
作用是用指定的方式对列表进行排序,默认不需要参数,从小到大排
list1 = [1,2,3,4,5,5,67,7,8,9,11,1] #排序,默认是从小到大 b = list1.sort() print(b) #结果为None print(list1) #结果 [1, 1, 2, 3, 4, 5, 5, 7, 8, 9, 11, 67] #使用sort()方法时,列表的元素类型必须一致 list2 = [1,2,4,5,'4',8,3,5] list2.sort() #报错 TypeError: '<' not supported between instances of 'str' and 'int'
#sort(func,key,reverse) 有三个参数,前两个与算法相关,暂不理会 # 默认 sort(reverse = False) ,表示不颠倒顺序 list1 = [1,2,3,4,5,5,67,7,8,9,11,1] #不颠倒顺序 list1.sort(reverse= False) print(list1) #结果 [1, 1, 2, 3, 4, 5, 5, 7, 8, 9, 11, 67] #颠倒顺序 list1.sort(reverse=True) print(list1) #结果 [67, 11, 9, 8, 7, 5, 5, 4, 3, 2, 1, 1]
常用的例子
1 n = int(input()) 2 str1 =str(n*n) 3 print(str(n)) 4 print(str1) 5 print(str1[::-1]) #翻转过来 6 str2=str1[::-1][0:len(str(n))] # 翻转过来后,取它的长度字符,就是n 7 8 print(str2) 9 10 while True: 11 try: 12 n = int(input()) 13 count = 0 14 for i in range(n+1): 15 if str(i) == str(i**2)[::-1][0:len(str(i))]: 16 count += 1 17 print(count) 18 except: 19 break 20 21 #################################################### 22 while True: 23 try: 24 n = int(input()) 25 count = 0 26 for i in range(n+1): 27 if str(i) == str(i**2)[-len(str(i)):]: 28 count += 1 29 print(count) 30 except: 31 break
八、作业
[课后作业] 第010讲:列表:一个打了激素的数组 | 课后测试题
[课后作业] 第011讲:列表:一个打了激素的数组2 | 课后测试题
[课后作业] 第012讲:列表:一个打了激素的数组3 | 课后测试题
九、【扩展阅读】
腾讯课堂——基础数据类型(list列表)

浙公网安备 33010602011771号