MST

星途 面试题库

面试题:Python列表值创新处理之数据筛选与转换

假设有一个复杂的Python列表 `data = [[1, 'a', True], [2, 'b', False], [3, 'c', True], [4, 'd', False]]`,列表中的每个子列表都包含一个数字、一个字符和一个布尔值。请用创新的思路实现筛选出数字为偶数且布尔值为 `True` 的子列表,并将筛选后的子列表中的字符全部转换为大写形式,最后返回处理后的新列表。同时解释你的代码逻辑和为何选择这种创新思路。
23.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
data = [[1, 'a', True], [2, 'b', False], [3, 'c', True], [4, 'd', False]]
result = [[num, sublist[1].upper(), boolean] for sublist in data if (num := sublist[0]) % 2 == 0 and (boolean := sublist[2])]
print(result)

代码逻辑

  1. 列表推导式:使用列表推导式来遍历data中的每个子列表。
  2. 赋值表达式(海象运算符):在if条件中使用赋值表达式(num := sublist[0])(boolean := sublist[2]),这样既可以在条件判断中使用变量numboolean,又避免了多次索引访问子列表元素。
  3. 条件判断:通过num % 2 == 0 and boolean筛选出数字为偶数且布尔值为True的子列表。
  4. 字符转换:对筛选出的子列表中的字符(即sublist[1])使用upper()方法转换为大写形式,并构建新的子列表。

创新思路选择原因

  1. 简洁高效:赋值表达式的使用减少了重复的索引操作,使代码更简洁,同时提高了可读性和执行效率。
  2. 代码紧凑:将筛选、转换和构建新列表的操作合并在一个列表推导式中,代码更加紧凑,减少了中间变量和循环结构,符合Python简洁明了的编程风格。