You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何更优雅地返回对象列表的多行str()格式化结果

解决方案

你当前的循环字符串拼接方案存在两个可优化点:Python中字符串为不可变类型,循环+=拼接会频繁生成新字符串对象,数据量大时性能损耗明显;同时需要手动切片移除末尾多余的换行符,代码冗余。更优的实现方式如下:

方案1:直接用str.join()生成结果(无需修改类定义)

str.join()会预先计算所需内存一次性生成字符串,效率远高于循环拼接,且自动处理分隔符不会产生末尾多余换行:

return '\n'.join("{}({}),ISBN:{},${:.2f}".format(item.title, item.author, item.isbn, item.price) for item in self.__books)

如果使用Python3.6及以上版本,用f-string替换str.format可读性更高:

return '\n'.join(f"{item.title}({item.author}),ISBN:{item.isbn},${item.price:.2f}" for item in self.__books)

方案2:复用性更强的实现(推荐)

如果这个格式化规则是Book类的通用字符串表示,可以先给Book类定义__str__方法,后续所有需要输出Book对象的场景都可以直接复用:

class Book:
    # 原有__init__等逻辑不变
    def __str__(self):
        return f"{self.title}({self.author}),ISBN:{self.isbn},${self.price:.2f}"

之后生成多行字符串的代码可以简化为:

return '\n'.join(str(book) for book in self.__books)

如果只是需要直接打印输出不需要返回字符串,可以进一步简化为:

print(*self.__books, sep='\n')

内容的提问来源于stack exchange,提问作者jwan218

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:39:05