通过沿元素列表移动窗口来操作元素的延伸

2024-05-14 20:19:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过沿着列表移动N来计算元素的总长度。例如,如果我有['A', 'B', 'C', 'D', 'E', 'F'],我移动N=2,我希望有['A+B', 'B+C', 'C+D', 'D+E', 'E+F']。你能推荐一个合适的Python方法吗?谢谢


Tags: 方法元素列表总长度
2条回答

使用列表理解:

l = ['A', 'B', 'C', 'D', 'E', 'F']

n = 2

result = [' + '.join(l[i:i+n]) for i in range(len(l)-(n-1))]

输出:

>>> result
['A + B', 'B + C', 'C + D', 'D + E', 'E + F']

或者,如果您真的想对元素求和而不是创建一个字符串,您可以只使用sum()

l = [1, 2, 3, 4, 5, 6]

n = 2

result = [sum(l[i:i+n]) for i in range(len(l)-(n-1))]

输出:

>>> result
[3, 5, 7, 9, 11]

当然,这可以通过使用标准库工具来实现,但是您可能想看看nicemore-itertools packagemore_itertools.windowed

import more_itertools

spam = ['A', 'B', 'C', 'D', 'E', 'F']
for window in more_itertools.windowed(spam, 2):
    print(window) # do whatever you want with it

输出:

('A', 'B')
('B', 'C')
('C', 'D')
('D', 'E')
('E', 'F')

相关问题 更多 >

    热门问题