-
创建列表
(1)普通列表member = ['小甲鱼','布丁','黑夜','迷途','胡图'] member number = [1,2,3,4,5]
(2)混合列表
mix = [1,'小甲鱼','布丁',2,23,[5,6,9]]
(3)空列表
empty = []
-
向列表内添加元素
(1)append():该函数有一个参数,且一次只能添加一个元素member.append('福禄娃娃') member len(memeber)
(2)extend():该函数有一个参数,但可以同时添加两个元素,它的原理是使用一个列表来扩充另外一个列表
member.append('竹林','小溪') #会报错 member.extend('竹林','小溪') #也会报错 member.extend(['竹林','小溪']) #成功,不会报错
注意:append()和extend()都会自动将元素添加到末尾,insert()可以将元素插入到任意位置
(3)insert():该函数有两个参数,第一个参数代表在列表中的位置,第二个参数代表插入的元素
member.insert(0,'牡丹') #将“牡丹”插入到第一个位置
-
从列表中获取元素
member[3] #获取member列表中的第四个元素,从0开始计数 temp = member[0] #交换member列表的第一个元素和第二个元素 member[0] = member[4] member[4] = temp
-
从列表中删除元素
(1)remove():
使用remove() 函数删除列表元素,不需要知道元素所在位置,只需要知道列表中存在该元素,如果试图删除一个列表中没有的元素,那么python会报错member.remove('小溪') member.remove('西瓜') #列表中没有改元素,会报错
(2)del
del不是一个函数,也不是一个方法,所以不用()。它也可以删除整个列表。del member[1] del member #会把整个member列表删除
(3)pop()
pop()从列表中取出最后一个元素,并返回给用户。因此,pop()可以用来赋值。
pop()还可以加上一个参数member.pop() #会把member列表中最后一个元素删除 name = member.pop() #将member列表当前的最后一个元素赋值给name,并在列表中删除该元素 member.pop(1) #弹出/删除member列表中的第二个元素
-
列表分片:
一次性获取多个元素,相当于拷贝元素,原列表不会改变member[1:4] #将member中的第二个元素和第三个元素分片出来,1代表起始位置,4代表终止位置(注:不包括4本身) member[:4] #省略第一个参数,会默认从0号位置(即第一个元素)开始拷贝 member[2:] #省略第二个参数,会默认拷贝到最后一个元素,从2号位置(第三个元素)拷贝到最后 member[:] #拷贝整个member列表 member2 = member[:]
-
列表的常用操作符
(1)比较操作符:当列表中有多个元素时,默认是从第0号位置开始比较,只要有一个元素赢了,就整个列表赢了,不需要考虑整个列表。list1 = [123] list2 = [234] list1 > list2 #返回False list1 = [123,456] list2 = [234,123] list1 > list2 #list1和list2的第一个元素123和234进行比较,123 < 234,所以结果直接就是False了
(2)逻辑操作符:
list3 = [123,456] (list1 < list2) and (list1 ==list3) #返回True
(3)算术操作符 + :
+实现列表的拼接,和之前学过的extend()的作用类似,但也存在区别。用extend()扩充更规范,尽量不用 +list4 = list1 + list2 #+会将list1和list2拼接到一块 list4 list1 + '鱼鱼鱼' #会报错,所以尽量不用+来扩充列表,添加元素用append()或extend()更好
(4)赋值操作符 = :
+实现列表的拼接,和之前学过的extend()的作用类似,但也存在区别。用extend()扩充更规范,尽量不用 +list3 list3 * 3 #将list3复制3次的一个新列表 list3 *= 5 #将list3复制5次,并将这个新的列表赋值给list3,即list3 = list3 * 5
(5)成员关系操作符 in :
in只能判断一个层次的成员关系123 in list3 #返回True '小甲鱼' not in list3 #返回True list5 = [123,['小甲鱼','牡丹'],456] '小甲鱼' in list5 #返回False,因为小甲鱼是在列表里面的列表,in只能判断一个层次的成员关系 '小甲鱼' in list5[1] #返回True,它访问的是list5的第二个元素(即列表['小甲鱼','牡丹']) list5[1][1] #类似于二维数组,访问的是list5中1号位置的1号元素(即'牡丹')
-
列表的小伙伴们:
dir()
cout():计数
index():索引
reverse():将整个列表原地翻转,将前后元素的位置全部置换
sort():有三个参数(暂时不学),对列表成员从小到大进行排序,sort(reverse),这个里面的reverse默认是Falsedir(list) list3.count(123) list3.index(123) list3.index(123,3,7) #3,7代表的是索引范围,起始和终止位置,返回值是元素123在(3,7)之间出现的位置 list3.reverse() list3 list6 = [40,4,8,2,3,7,19,0] list6.sort() list6 list6.sort(reverse=True) list7 = list6[:] #利用分片复制列表,开创了新的内存空间 list8 = list6 #用 = 复制列表,并没有开创新的内存空间,和上述语句是有区别的,下面sort语句操作就可以看出区别 list6.sort() list6 list7 list8 # list8会跟着 list6 改变,而 list7 不会,它依旧是原来的值
有列表 name = [‘F’, ‘i’, ‘h’, ‘C’],如果小甲鱼想要在元素 ‘i’ 和 ‘h’ 之间插入元素 ‘s’,应该使用什么方法来插入?
name.insert(2,'s')
练习1.自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?
假设给定以下列表:
member = [‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘怡静’, ‘秋舞斜阳’]
要求将列表修改为:
member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]
方法一:使用 insert() 和 append() 方法修改列表。
member.insert(1,'88')
member.insert(3,'90')
member.insert(5,'85')
member.insert(7,'90')
member.insert(9,'88')
方法二:重新创建一个同名字的列表覆盖。
练习2.请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?
list1 = [1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]
解:
list1 = [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
list1[1][2][0]="小鱿鱼"
练习3. 利用 for 循环打印 member 列表中的每个内容:
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
for each in member:
print (each)
练习4.请使用列表推导式补充被小甲鱼不小心涂掉的部分
#小甲鱼代码,自己不会
list1=['1.Just do it','2.一切皆有可能','3.让编程改变世界','4.Impossible is nothing']
list2=['4.阿迪达斯','2.李宁','3.鱼C工作室','1.耐克']
list3=[name + ':'+ slogan[2:] for slogan in list1 for name in list2 if slogan[0] == name[0]]
for each in list3:
print(each)