Python:如何简化3D字符串列表元素拼接为单个字符串的代码?
简洁实现3D列表转换行分隔字符串
给你几种更简洁的实现方式,比原代码更紧凑高效:
方式一:直接用生成器表达式 + str.join()
针对你这种固定三层嵌套的结构,直接用嵌套生成器表达式扁平化列表,再通过'\n'.join()一次性拼接成目标字符串,比循环拼接更高效(避免多次字符串拷贝):
eleli = [[["ele1"]], [["ele2"]], [["ele3"]], [["ele4"]], [["ele5"]]] lali = '\n'.join(item for sub in eleli for subsub in sub for item in subsub) print(lali)
方式二:通用扁平化函数(适配任意嵌套层数)
如果你的列表嵌套层数可能变化,写一个递归扁平化生成器函数,适配所有嵌套场景:
def flatten(nested_list): for elem in nested_list: if isinstance(elem, list): yield from flatten(elem) else: yield elem eleli = [[["ele1"]], [["ele2"]], [["ele3"]], [["ele4"]], [["ele5"]]] lali = '\n'.join(flatten(eleli)) print(lali)
为什么比原代码好?
原代码先通过列表推导生成elecom再循环拼接,不仅多了一个中间变量,循环里的+=拼接字符串会反复创建新字符串,性能不如str.join()(join会预先计算所需内存,一次性完成拼接)。
内容的提问来源于stack exchange,提问作者anfwkdrn
相关产品推荐
相关产品推荐

