面试题答案
一键面试users = [
{'name': 'Alice', 'age': 25, 'is_active': True, 'points': 100},
{'name': 'Bob', 'age': 30, 'is_active': False, 'points': 50},
{'name': 'Charlie', 'age': 22, 'is_active': True, 'points': 150}
# 假设有很多这样的字典
]
result = []
for user in users:
if user['age'] > 25 and user['is_active'] and user['points'] > 100:
result.append(user['name'])
print(result)
条件判断优化提高性能的方法
-
按概率从高到低排列条件:如果可以事先知道某些条件的满足概率,将满足概率低的条件放在前面。例如,如果
is_active
为False
的用户占比很大,那么可以将user['is_active']
这个条件放在最前面,这样很多不满足的情况可以在第一步就被排除,减少后续条件判断的计算量。 -
减少函数调用:在条件判断中,尽量减少函数调用。在当前代码中,条件判断都是直接读取字典的值进行比较,没有额外的函数调用,这是比较好的。如果条件判断中有函数调用,要尽量避免不必要的调用,例如将结果缓存起来,避免重复计算。
-
使用生成器表达式:可以使用生成器表达式来简化代码并可能提高性能,如下:
result = [user['name'] for user in users if user['age'] > 25 and user['is_active'] and user['points'] > 100]
生成器表达式在迭代时是惰性求值的,只有在实际需要获取结果时才会计算,在处理大数据集时可能会有更好的性能表现。同时,这种方式代码更简洁。