MST
星途 面试题库

面试题:Python切片在复杂数据结构嵌套中的应用

有一个复杂数据结构 `data = [[1, {'sub': [2, 3]}, 4], [5, {'sub': [6, 7]}, 8]]`,请使用Python切片操作,提取出所有 `sub` 列表中的偶数元素,并以一个新的扁平列表返回。同时阐述在处理这种嵌套结构时,切片操作可能遇到的问题及解决方案。
15.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
data = [[1, {'sub': [2, 3]}, 4], [5, {'sub': [6, 7]}, 8]]
result = []
for sublist in data:
    for item in sublist:
        if isinstance(item, dict) and'sub' in item:
            for num in item['sub']:
                if num % 2 == 0:
                    result.append(num)
print(result)

切片操作在处理这种嵌套结构时可能遇到的问题及解决方案:

  1. 问题:切片操作主要适用于序列类型(如列表、元组等),对于嵌套结构中的字典类型无法直接使用切片。在上述数据结构中,sub 所在的元素是字典,不能直接切片获取 sub 列表。
    • 解决方案:先判断元素是否为字典,并且字典中是否存在 sub 键,然后再获取 sub 列表进行后续操作。
  2. 问题:多层嵌套结构使得切片的索引计算变得复杂。如果嵌套层数较多,很难通过简单的切片操作获取到目标数据。
    • 解决方案:使用循环来遍历嵌套结构,一层一层地深入访问,像上述代码通过多层循环来处理每一层的结构。
  3. 问题:切片操作本身不会改变原数据结构,若需要在原结构上修改数据,切片操作后重新赋值可能会破坏原有的嵌套关系。
    • 解决方案:如果要修改原数据结构,在切片获取数据修改后,需要根据原结构的嵌套逻辑正确地将修改后的数据放回原位置,或者在修改前先深拷贝原数据结构,修改拷贝后的结构而不影响原数据。