如何从嵌套列表中提取指定的考试表头元素?
问题:提取嵌套列表中的Exam表头
原始嵌套列表
[['Student', 'Exam 1', 'Exam 2', 'Exam 3'], ['Thorny', '100', '90', '80'], ['Mac', '88', '99', '111'], ['Farva', '45', '56', '67'], ['Rabbit', '59', '61', '67'], ['Ursula', '73', '79', '83'], ['Foster', '89', '97', '101']]
成功提取学生姓名的代码及结果
代码
def get_students(grades): student_names = [] for i in range(1, len(grades)): student_names.append(grades[i][0]) return student_names
输出结果
['Thorny', 'Mac', 'Farva', 'Rabbit', 'Ursula', 'Foster']
提取Exam表头的错误尝试
错误代码
def get_assignments(grades): exam_list = [] for i in range(6, len(grades)): exam_list.append(grades[0][1 : ]) return exam_list
错误输出结果
[['Exam 1', 'Exam 2', 'Exam 3']]
预期输出
['Exam 1', 'Exam 2', 'Exam 3']
解决建议
你的错误代码存在两个核心问题:
- 冗余循环:目标数据是第一行(
grades[0])中从第2个元素开始的子列表,这本身就是你要的结果,不需要通过循环追加到空列表。你写的range(6, len(grades))只会执行1次,直接把整个子列表作为元素加入exam_list,导致结果变成嵌套结构。 - 索引逻辑错误:循环的范围完全没必要,因为目标数据只存在于第一行。
最简正确写法
直接返回目标子列表即可:
def get_assignments(grades): return grades[0][1:]
练习循环的写法(可选)
如果是为了练习循环逻辑,可以遍历第一行中从索引1开始的元素,逐个添加到列表:
def get_assignments(grades): exam_list = [] for exam in grades[0][1:]: exam_list.append(exam) return exam_list
以上两种写法都能得到你想要的预期输出。
内容的提问来源于stack exchange,提问作者Brent
相关产品推荐
相关产品推荐

