Python如何实现列表元素依次拼接生成累积前缀字符串序列
前缀拼接序列生成方案
需求说明
给定字符串列表,输出逐元素累加拼接的前缀序列,示例:
输入:['e1', 'e2', 'e3']
期望输出:['e1', 'e1e2', 'e1e2e3']
返回结果支持任意可迭代类型。
现有实现
my_list = ['e1', 'e2', 'e3'] new_list = [] add_elem = '' for elem in my_list: add_elem += elem new_list.append(add_elem)
更简洁的实现方式
- 内置迭代器方案(推荐,Python 3.2+支持)
使用标准库itertools.accumulate,默认对字符串类型执行累积拼接操作,返回迭代器,性能和原生循环一致,代码仅需一行:
from itertools import accumulate result = accumulate(['e1', 'e2', 'e3']) # 如需转列表直接套list()即可:list(result)
- 海象运算符列表推导(Python 3.8+支持)
利用海象运算符的赋值返回特性,在列表推导中维护累积变量,时间复杂度O(n),代码简洁:
s = '' result = [s := s + elem for elem in ['e1', 'e2', 'e3']]
- 切片拼接列表推导
通过切片取前N个元素拼接,不需要额外依赖,缺点是时间复杂度为O(n²),仅适合短列表使用:
my_list = ['e1', 'e2', 'e3'] result = [''.join(my_list[:i+1]) for i in range(len(my_list))]
内容的提问来源于stack exchange,提问作者user964986
相关产品推荐
相关产品推荐

