MST

星途 面试题库

面试题:Python函数返回值的复杂场景应用

假设有一个Python函数,它接受一个列表作为参数,列表中的元素可能是整数、字符串或其他列表。函数需要对列表进行递归遍历,将所有整数相加,并返回这个总和。请写出这个函数的代码,并解释为什么这样处理返回值,如何确保函数在不同输入场景下都能正确返回结果。
43.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def sum_list(lst):
    total = 0
    for item in lst:
        if isinstance(item, int):
            total += item
        elif isinstance(item, list):
            total += sum_list(item)
    return total

关于返回值处理的解释

  1. 累加整数:在循环遍历列表lst时,使用isinstance函数检查每个元素item。如果item是整数类型,直接将其加到total变量中。这是直接处理列表中整数元素的部分。
  2. 递归处理子列表:如果item是列表类型,说明遇到了嵌套列表,此时调用函数自身sum_list(item),递归地处理这个子列表,并将递归返回的总和加到total中。这确保了所有层次的嵌套列表中的整数都能被正确累加。
  3. 返回总和:循环结束后,total变量中已经累计了列表及其所有嵌套列表中整数的总和,最后返回total

确保在不同输入场景下正确返回结果的方式

  1. 类型检查:使用isinstance函数确保只对整数和列表类型进行处理,避免在遇到其他类型(如字符串)时出现错误。对于字符串等非整数非列表类型,会跳过不做处理,从而保证函数在包含多种类型元素的列表输入时能正常运行。
  2. 递归处理:通过递归调用sum_list函数,能够处理任意深度的嵌套列表。无论嵌套有多深,每次遇到列表时都会递归进入处理,直到遍历完所有嵌套层次并累加所有整数。这样可以适应各种复杂的嵌套列表结构输入场景。