从SocialMedia对象列表提取用户名的最优方式及简化实现问询
你的当前实现完全正确,而且可读性极强,如果后续需要对每个对象做额外逻辑处理(比如过滤无效username、捕获属性不存在的异常),这种显式循环写法是最优选择,维护起来也更方便。
如果追求更少的代码行数,Python里有两种常用的简洁写法:
1. 列表推导式(推荐)
这是Python中最常用的简洁写法,一行完成,可读性也很好:
usernames = [sm.username for sm in socialmedias]
2. 使用map结合operator.attrgetter
如果偏好函数式风格,可以用map配合operator模块的attrgetter,不过需要先导入模块:
from operator import attrgetter usernames = list(map(attrgetter('username'), socialmedias))
这种写法和列表推导式效率相近,但列表推导式在Python社区接受度更高,可读性也更直观。
总结:如果只是单纯提取属性,列表推导式是代码更短且兼顾可读性的最优解;如果需要额外逻辑,你的原循环写法依然是最佳选择。
内容的提问来源于stack exchange,提问作者Paul Viorel
相关产品推荐
相关产品推荐

