列表使用练习题
商品价格计算
题目描述
购物车中有5件商品,计算总价格。
输出示例
=== 商品价格计算 ===
商品价格: [25.5, 18.0, 32.8, 15.2, 40.0]
总价格:131.5元
实现代码
print("=== 商品价格计算 ===")prices = [25.5, 18.0, 32.8, 15.2, 40.0]
print("商品价格:", prices)total_price = prices[0] + prices[1] + prices[2] + prices[3] + prices[4]
print("总价格:" + str(total_price) + "元")
水果库存管理
题目描述
计算水果库存总量。
输出示例
=== 水果库存管理 ===
水果种类: ['苹果', '香蕉', '橙子', '葡萄', '梨']
库存数量: [120, 85, 90, 60, 75]
总库存量:430斤
实现代码
print("=== 水果库存管理 ===")fruits = ['苹果', '香蕉', '橙子', '葡萄', '梨']
quantities = [120, 85, 90, 60, 75]print("水果种类:", fruits)
print("库存数量:", quantities)total_quantity = quantities[0] + quantities[1] + quantities[2] + quantities[3] + quantities[4]
print("总库存量:" + str(total_quantity) + "斤")
运动会项目报名
题目描述
显示运动会项目和对应的报名人数。
输出示例
=== 运动会项目报名 ===
项目名称: ['100米跑', '跳远', '铅球', '接力赛', '跳高']
报名人数: [25, 18, 12, 30, 15]
100米跑:25人
跳远:18人
铅球:12人
接力赛:30人
跳高:15人
实现代码
print("=== 运动会项目报名 ===")events = ['100米跑', '跳远', '铅球', '接力赛', '跳高']
participants = [25, 18, 12, 30, 15]print("项目名称:", events)
print("报名人数:", participants)print(events[0] + ":" + str(participants[0]) + "人")
print(events[1] + ":" + str(participants[1]) + "人")
print(events[2] + ":" + str(participants[2]) + "人")
print(events[3] + ":" + str(participants[3]) + "人")
print(events[4] + ":" + str(participants[4]) + "人")
基础切片操作
题目描述
给定一个列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],使用切片操作完成以下任务:
获取前5个元素
获取后3个元素
获取从第3个到第8个元素
获取从第2个到倒数第3个元素
输出示例
原始列表: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
前5个元素: [0, 1, 2, 3, 4]
后3个元素: [8, 9, 10]
第3到第8个元素: [2, 3, 4, 5, 6, 7]
第2到倒数第3个元素: [1, 2, 3, 4, 5, 6, 7, 8]
实现代码
# 原始列表
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 切片操作
first_five = numbers[:5]
last_three = numbers[-3:]
third_to_eighth = numbers[2:8]
second_to_third_last = numbers[1:-2]# 输出结果
print("原始列表:", numbers)
print("前5个元素:", first_five)
print("后3个元素:", last_three)
print("第3到第8个元素:", third_to_eighth)
print("第2到倒数第3个元素:", second_to_third_last)
步长切片
题目描述
使用步长参数完成以下切片操作:
获取所有偶数索引的元素
获取所有奇数索引的元素
反转列表
从末尾开始每隔一个元素取一个
输出示例
原始列表: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
偶数索引: ['a', 'c', 'e', 'g']
奇数索引: ['b', 'd', 'f', 'h']
反转列表: ['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
末尾隔项选取: ['h', 'f', 'd', 'b']
实现代码
# 原始列表
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']# 步长切片操作
even_index = letters[::2]
odd_index = letters[1::2]
reversed_list = letters[::-1]
reverse_every_other = letters[::-2]# 输出结果
print("原始列表:", letters)
print("偶数索引:", even_index)
print("奇数索引:", odd_index)
print("反转列表:", reversed_list)
print("末尾隔项选取:", reverse_every_other)
添加元素任务
题目描述
已知一个初始列表
fruits
,存储了几种水果名称(初始内容为["apple", "banana"]
)。请通过列表的内置操作完成以下添加元素的任务:
向列表的末尾添加单个水果名称 "orange";
向列表的末尾一次性添加两个水果名称 "grape" 和 "watermelon";
在列表索引为 1 的位置(即 "banana" 之前)插入水果名称 "pear";
最后输出最终的列表,查看添加结果。
输出示例
['apple', 'pear', 'banana', 'orange', 'grape', 'watermelon']
实现代码
# 定义初始水果列表
fruits = ["apple", "banana"]# 向列表末尾添加单个元素
fruits.append("orange")# 向列表末尾添加多个元素
fruits.extend(["grape", "watermelon"])# 在指定索引位置插入元素
fruits.insert(1, "pear")# 输出最终列表
print(fruits)
列表运算符的基础应用
题目描述
已知两个列表
numbers = [1, 3, 5]
和letters = ['a', 'b']
。请使用列表运算符完成以下操作:
用
+
运算符将两个列表合并为一个新列表;用
*
运算符将letters
列表重复 3 次,生成新列表;用
in
运算符判断元素 3 是否在numbers
列表中;用
not in
运算符判断元素 'c' 是否不在letters
列表中;依次打印上述 4 个操作的结果。
输出示例
[1, 3, 5, 'a', 'b']
['a', 'b', 'a', 'b', 'a', 'b']
True
True
实现代码
# 定义初始列表
numbers = [1, 3, 5]
letters = ['a', 'b']# 1. 合并两个列表(+ 运算符)
merged_list = numbers + letters# 2. 重复列表元素(* 运算符)
repeated_letters = letters * 3# 3. 判断元素是否存在(in 运算符)
is_3_in = 3 in numbers# 4. 判断元素是否不存在(not in 运算符)
is_c_not_in = 'c' not in letters# 打印所有结果
print(merged_list)
print(repeated_letters)
print(is_3_in)
print(is_c_not_in)
数字列表的基本排序
题目描述
有一个数字列表,需要分别进行升序和降序排序,并显示排序结果。
输出示例
原始列表: [23, 1, 45, 12, 67, 3, 89, 34]
升序排序: [1, 3, 12, 23, 34, 45, 67, 89]
降序排序: [89, 67, 45, 34, 23, 12, 3, 1]
实现代码
# 创建数字列表
numbers = [23, 1, 45, 12, 67, 3, 89, 34]
print("原始列表:", numbers)# 升序排序
ascending_numbers = numbers.copy()
ascending_numbers.sort()
print("升序排序:", ascending_numbers)# 降序排序
descending_numbers = numbers.copy()
descending_numbers.sort(reverse=True)
print("降序排序:", descending_numbers)
字符串列表的不同排序方式
题目描述
有一个字符串列表['Apple', 'banana', 'Cherry', 'date', 'Elderberry'],需要按三种不同方式排序:
默认排序(按ASCII码)
忽略大小写排序
按字符串长度排序
输出示例
原始列表: ['Apple', 'banana', 'Cherry', 'date', 'Elderberry']
默认排序: ['Apple', 'Cherry', 'Elderberry', 'banana', 'date']
忽略大小写: ['Apple', 'banana', 'Cherry', 'date', 'Elderberry']
按长度排序: ['date', 'Apple', 'banana', 'Cherry', 'Elderberry']
实现代码
# 创建字符串列表
words = ['Apple', 'banana', 'Cherry', 'date', 'Elderberry']
print("原始列表:", words)# 默认排序(按ASCII码)
default_sorted = words.copy()
default_sorted.sort()
print("默认排序:", default_sorted)# 忽略大小写排序
case_insensitive = words.copy()
case_insensitive.sort(key=str.lower)
print("忽略大小写:", case_insensitive)# 按字符串长度排序
length_sorted = words.copy()
length_sorted.sort(key=len)
print("按长度排序:", length_sorted)
学生管理系统
题目描述
管理一个学生列表,实现添加学生、删除指定学生、删除最后加入的学生等功能。
输出示例
初始学生列表: ['张三', '李四', '王五']
添加赵六和钱七后: ['张三', '李四', '王五', '赵六', '钱七']
删除李四后: ['张三', '王五', '赵六', '钱七']
删除最后一个学生(钱七)后: ['张三', '王五', '赵六']
删除第一个学生(张三)后: ['王五', '赵六']
清空学生列表后: [ ]
实现代码
# 初始学生列表
students = ['张三', '李四', '王五']
print("初始学生列表:", students)# 添加新学生
students.append('赵六')
students.append('钱七')
print("添加赵六和钱七后:", students)# 删除指定学生(李四)
if '李四' in students:students.remove('李四')print("删除李四后:", students)# 删除最后一个学生
last_student = students.pop()
print(f"删除最后一个学生({last_student})后:", students)# 删除索引0的学生(张三)
first_student = students.pop(0)
print(f"删除第一个学生({first_student})后:", students)# 清空学生列表
students.clear()
print("清空学生列表后:", students)
学生成绩管理系统
题目描述
对学生期末考试成绩进行管理和清理。请按顺序完成以下操作:
删除所有不及格成绩(60分以下)
删除最高分和最低分(各删除一个)
删除指定分数段的学生成绩(70-80分之间)
删除重复的成绩(保留第一次出现的成绩)
输出示例
原始成绩: [85, 42, 96, 53, 78, 61, 89, 96, 30, 95, 67, 85, 42, 88, 72]
删除不及格后: [85, 96, 78, 61, 89, 96, 95, 67, 85, 88, 72]
删除最高最低分后: [85, 78, 61, 89, 96, 95, 67, 85, 88, 72]
删除70-80分后: [85, 61, 89, 96, 95, 67, 85, 88]
删除重复成绩后: [85, 61, 89, 96, 95, 67, 88]
实现代码
# 学生成绩原始数据
scores = [85, 42, 96, 53, 78, 61, 89, 96, 30, 95, 67, 85, 42, 88, 72]
print("原始成绩:", scores)# 步骤1:删除所有不及格成绩(<60分)
step1_scores = scores.copy()
step1_scores = [score for score in step1_scores if score >= 60]
print("删除不及格后:", step1_scores)# 步骤2:删除最高分和最低分(各删除一个)
step2_scores = step1_scores.copy()
if step2_scores:max_score = max(step2_scores)min_score = min(step2_scores)# 删除第一个最高分for i in range(len(step2_scores)):if step2_scores[i] == max_score:removed_max = step2_scores.pop(i)break# 删除第一个最低分for i in range(len(step2_scores)):if step2_scores[i] == min_score:removed_min = step2_scores.pop(i)breakprint("删除最高分最低分后:", step2_scores)# 步骤3:删除指定分数段的学生成绩(70-80分之间)
step3_scores = step2_scores.copy()
scores_to_remove = []
step3_scores = [score for score in step3_scores if not (70 <= score <= 80)]print("删除70-80分后:", step3_scores)# 步骤4:删除重复的成绩(保留第一次出现的成绩)
step4_scores = []
seen_scores = set()
removed_duplicates = []for score in step3_scores:if score not in seen_scores:seen_scores.add(score)step4_scores.append(score)else:removed_duplicates.append(score)print("删除的重复成绩后:", removed_duplicates)
清理电商平台商品价格数据
题目描述
你是一家电商公司的数据分析员,需要清理商品价格数据。原始数据中存在以下问题:
空值(None)
价格为0或负数的无效数据
价格过高(超过10000元)的异常值
重复的价格记录
输出示例
原始价格数据: [299, None, 1599, -99, 899, 1599, 99999, 459, None, 1299, 8888, 459, 0, 1999]
删除空值后: [299, 1599, -99, 899, 1599, 99999, 459, 1299, 8888, 459, 0, 1999]
删除无效价格后: [299, 1599, 899, 1599, 99999, 459, 1299, 8888, 459, 1999]
删除异常高价后: [299, 1599, 899, 1599, 459, 1299, 8888, 459, 1999]
删除重复价格后: [299, 1599, 899, 459, 1299, 8888, 1999]
实现代码
# 电商平台商品价格原始数据
prices = [299, None, 1599, -99, 899, 1599, 99999, 459, None, 1299, 8888, 459, 0, 1999]
print("原始价格数据:", prices)# 复制原始数据,避免修改原数据
cleaned_prices = prices.copy()# 步骤1:删除空值(None)i = 0
while i < len(cleaned_prices):if cleaned_prices[i] is None:removed_value = cleaned_prices.pop(i)else:i += 1
print("删除空值后:", cleaned_prices)# 步骤2:删除无效价格(0或负数)i = 0
while i < len(cleaned_prices):if cleaned_prices[i] <= 0:removed_value = cleaned_prices.pop(i)else:i += 1
print("删除无效价格后:", cleaned_prices)# 步骤3:删除异常高价(超过10000元)i = 0
while i < len(cleaned_prices):if cleaned_prices[i] > 10000:removed_value = cleaned_prices.pop(i)else:i += 1
print("删除异常高价后:", cleaned_prices)# 步骤4:删除重复价格(保留第一次出现)seen_prices = set()
i = 0
while i < len(cleaned_prices):if cleaned_prices[i] not in seen_prices:seen_prices.add(cleaned_prices[i])i += 1else:removed_value = cleaned_prices.pop(i)print("删除重复价格后:", cleaned_prices)