第十二关
知识点复习
学习用时:50min
随堂测验+上机作业:50min
随堂作业正确率:2/3
1.列表元素的删除
pop()方法 :列表.pop()返回列表指定位置的元素,并删除这个元素。
pop() 可以传入一个要删除的元素的索引,如果不传入,就默认为最后一个元素的索引。
del 列表[索引] :删除列表的元素,支持正向和反向索引。
remove() 方法:列表.remove(值) 可以在列表中找到 第一个 指定的值,然后将它删除。
food = ['炒鸡蛋', '手抓饭', '鸡肉卷', '汉堡', '烤肉', '粥']
# 用 del 语句去掉鸡肉卷
del food[2]
# 用 remove() 方法去掉烤肉
food.remove("烤肉")
# 打印出去掉上面两种食物后的食物清单
print(food)
2.列表分片
列表分片用一对以冒号分隔的索引位置表示,格式为 列表[起始索引:结束索引]。比如要获取 students 中第三到第五个元素,也就是索引为 2,3,4 的元素,就要写成 students[2:5]
截取前三个元素,就写成 list[:3];而截取最后四个元素,就写成 list[-4:];截取中间部分 list[a:b],分片长度就是 b - a。这些常用列表操作都极其直观和简便。
#对于从头开始的分片,Python 支持更加简便的写法,省去开始的 0
s = 'abcdefg'
#索0123456
# 返回从起始位置到索引位置 2 处的字符串切片
print(s[:3]) # 输出 'abc'
# 返回从第三个索引位置到结尾的字符串切片
print(s[3:]) # 输出 'defg'
#反向索引
print(s[-3:]) #输出efg
# 字符串逆序输出
print(s[::-1]) # 输出 'gfedcba'
3.列表常用方法
对列表的操作,还有统计、排序、反转、复制、清空等。
操作 | 方法 |
---|---|
添加 | list.append(“刘多福”) |
插入 | list.insert(0,“刘多福”) |
索引 | list.index(“刘多福”) |
移除元素 | list.pop(1) |
移除元素 | list.remove(“刘多福”) |
统计出现次数 | list.count(“刘多福”) |
排序 | list.sort() |
反转 | list.reverse() |
复制 | list.copy() |
清空 | list.clear() |
sort() 可以对列表内的元素进行排序,字符串列表的排序按照每个元素首字母的顺序来排序,数值列表的排序是按照数值大小从小到大进行排序。
str_list = ["liu", "duo", "fu"]
str_list.sort()
print(str_list)
# 输出:['duo', 'fu', 'liu']
num_list = [4, 2, 1, 9]
num_list.sort()
print(num_list)
# 输出:[1, 2, 4, 9]
反转 reverse()、复制copy()、清空clear()
# reverse() 方法:将列表顺序反转,很实用
students = ["刘", "多", "福"]
students.reverse()
print(students)
# 输出:['福', '多', '刘']
#----------------------------------------------------------------------------------------------------
# copy() 方法:复制一个同样的列表
students1 = [1, 2, 3]
students2 = students1.copy()
print(students2)
# 输出:[1, 2, 3]
students1 = [1, 2, 3]
students2 = students1
students1[0] = '4'
print(students2)
# 输出:[4, 2, 3]
#students1 和 students2 只是同一个列表的不同代号,修改 student1 就是修改 student2,而copy()方法是新建一个列表
#----------------------------------------------------------------------------------------------------
# clear() 方法:清空列表
students = ["刘", "多", "福"]
students.clear()
print(students)
# 输出:[]
#clear() 方法也是类似的,直接使用 students = [] 并不是将原来的列表清空,而是将“students”这个名称冠到一个新建的空列表上,clear() 方法是直接对原来的那个列表进行操作,彻底清空。
4.练习
这个练习错的惨了
- 三个成绩表单:来统计贾宝玉和秦可卿他们到底在几门课里是倒数前三
# 定义函数,计算某个学生出现在倒数三名的总次数
def last_three(name):
num1 = code_ranks[-3:].count(name)
num2 = chinese_ranks[-3:].count(name)
num3 = math_ranks[-3:].count(name)
num = num1 +num2 + num3
return num
print('贾宝玉排在倒数三名的次数是', last_three("贾宝玉"))
print('秦可卿排在倒数三名的次数是', last_three("秦可卿"))
- 对分数进行排序;
- 去掉最高分和最低分;
- 对剩下的分数求和,然后算出平均分并将其打印出来。
scores = [92.1, 93.6, 88.2, 91.2, 85.7, 94.5, 95.1, 90.6]
scores.sort()
del scores[0]
del scores[-1] # scores.pop()
avg = sum(scores) / len(scores)
print (avg)
- 10道题前 5 题每道题 5 分,后 5 题每道题 10 分。
data = ['对', '错', '错', '对', '错', '对', '对', '对', '错', '对']
data1 = data[:5]
data2 = data[-5:]
s1 = data1.count("对") * 5
s2 = data2.count("对") * 10
score = s1 + s2
print('刘多福的分数是' + str(score) + '分')