
2.1.4 列表的方法
“不止这些,Python的列表还有许多有用的方法。听我慢慢说。”
1)添加新元素,使用append(),例如:
>>> medicine_name=[] #一个空列表,一个元素也没有 >>> medicine_name [] >>> medicine_name.append('聪明药丸') #添加一个元素 >>> medicine_name ['聪明药丸'] >>> medicine_name.append('力量冲剂') #再添加一个元素 >>> medicine_name.append('速度胶囊') #再添加一个元素 >>> medicine_name ['聪明药丸', '力量冲剂', '速度胶囊']
2)统计元素出现的次数,使用count(),例如:
>>> medicine_name_plus=medicine_name*3 #把medicine_name列表重复3遍 >>> medicine_name.count('聪明药丸') # medicine_name中“聪明药丸”的个数 1 >>> medicine_name_plus.count('聪明药丸') # medicine_name_plus中“聪明药丸”的个数 3
3)扩展列表,使用extend(),例如:
>>> medicine1=['聪明药丸','力量冲剂'] >>> medicine2=['速度胶囊','耐力粉末','减肥药膏'] >>> medicines=[] >>> medicines.extend(medicine1) >>> medicines ['聪明药丸','力量冲剂'] >>> medicines.extend(medicine2) >>> medicines ['聪明药丸','力量冲剂','速度胶囊','耐力粉末','减肥药膏']
特别提醒注意的是extend()和append()的区别。我们先来看看下面使用append()会有怎样的效果:
>>> medicines.append(medicine2) >>> medicines ['聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', ['速度胶囊', '耐力粉末', '减肥药膏']]
对比两段代码会发现,前者extend()将列表medicine1和medicine2的所有元素都扩展到列表medicines中,而后者append()则将列表medicine2整个作为一个元素添加到medicines中。
4)查找元素下标,使用index(),例如:
>>> medicines=['聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏'] >>> medicines=medicines*3 >>> medicines ['聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏'] >>> medicines.index('速度胶囊') 2
注意,index()返回的是在列表中最先找到的元素的下标。上面故意将medicines的元素重复3遍,虽然列表里有3个‘速度胶囊’,但是index('速度胶囊')只返回了第一个“速度胶囊”的下标——2。
5)插入元素,使用insert(),例如:
>>> medicines.insert(3,'视力口服液') #在第3个元素后面插入‘视力口服液’ >>> medicines ['聪明药丸', '力量冲剂', '速度胶囊', '视力口服液', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏']
6)弹出并返回指定元素,使用pop(),例如:
>>> medicines #显示列表medicines ['聪明药丸', '力量冲剂', '速度胶囊', '视力口服液', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏'] >>> medicines.pop(5) #弹出下标为5的元素,并返回其值 '减肥药膏' >>> medicines #再次显示列表,发现原第5个元素已被弹出 ['聪明药丸', '力量冲剂', '速度胶囊', '视力口服液', '耐力粉末', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏']
如果不指定弹出的元素下标,则默认弹出末尾元素。例如:
>>> medicines ['聪明药丸', '力量冲剂', '速度胶囊', '视力口服液', '耐力粉末', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏'] >>> medicines.pop() '减肥药膏' >>> medicines.pop() '耐力粉末' >>> medicines.pop() '速度胶囊'
7)移除指定元素,使用remove(),例如:
>>> medicines ['聪明药丸', '力量冲剂', '速度胶囊', '视力口服液', '耐力粉末', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂'] >>> medicines.remove('视力口服液') >>> medicines ['聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末', '减肥药膏', '聪明药丸', '力量冲剂']
8)列表反向,使用reverse(),例如:
>>> medicines=['聪明药丸', '力量冲剂', '速度胶囊', '耐力粉末'] >>> medicines.reverse() >>> medicines ['耐力粉末', '速度胶囊', '力量冲剂', '聪明药丸']
9)列表排序,使用sort(),例如:
>>> numbers=[1,5,8,6,3,4,1,2,5,9,7] >>> numbers.sort() >>> numbers [1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9]
10)清空列表,使用clear(),例如:
>>> medicines ['耐力粉末', '速度胶囊', '力量冲剂', '聪明药丸'] >>> medicines.clear() >>> medicines []
11)复制列表,使用copy(),例如:
>>> medicines1=['耐力粉末', '速度胶囊', '力量冲剂'] >>> medicines2=medicines1.copy() >>> medicines2 ['耐力粉末', '速度胶囊', '力量冲剂']
听了西西船长的讲解,大家对列表这个数据类型相当有好感,纷纷表示在以后的Python程序中会好好使用列表。而此时,队医格兰特蕾妮已经开始有条不紊地将她的药品一一添加到medicines列表中。
【练一练】
(1)派森号上目前共有西西船长、工程师克里克里、瞭望员大熊、驾驶员菲菲兔、队医格兰特蕾妮、机械师洛克威尔6名船员。请用列表将每个人的名字和职业组合起来。然后将这些组合一个一个添加到船员列表中。
(2)假设上题中完成的船员列表为二维列表group,请用户输入编号,根据编号从group中取出相应编号船员的职业和姓名,并分别赋值给字符串变量position和name,该如何编写代码?