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)
代码逻辑
- 列表推导式:使用列表推导式来遍历
data
中的每个子列表。
- 赋值表达式(海象运算符):在
if
条件中使用赋值表达式(num := sublist[0])
和(boolean := sublist[2])
,这样既可以在条件判断中使用变量num
和boolean
,又避免了多次索引访问子列表元素。
- 条件判断:通过
num % 2 == 0 and boolean
筛选出数字为偶数且布尔值为True
的子列表。
- 字符转换:对筛选出的子列表中的字符(即
sublist[1]
)使用upper()
方法转换为大写形式,并构建新的子列表。
创新思路选择原因
- 简洁高效:赋值表达式的使用减少了重复的索引操作,使代码更简洁,同时提高了可读性和执行效率。
- 代码紧凑:将筛选、转换和构建新列表的操作合并在一个列表推导式中,代码更加紧凑,减少了中间变量和循环结构,符合Python简洁明了的编程风格。