我有以下元素列表:
['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)
尝试这个迭代工具。累积
import itertools
lst = ['e1', 'e2', 'e3']
print(list(itertools.accumulate(lst)))
更多用法见文档
下面是一个列表理解。
my_list = ['e1', 'e2', 'e3']
new_list = [''.join(my_list[0:x+1]) for x in range(len(my_list))]
代码越短并不意味着它越好,可读性是最重要的因素。也就是说,您可以使用str.join
和slices
:
my_list, new_list = ['e1', 'e2', 'e3'], []
for i in range(len(my_list)):
new_list.append(''.join(my_list[:i+1]))
但实际上,你的解决方案也一样好。