2024-05-14 20:19:19 发布
网友
我试图通过沿着列表移动N来计算元素的总长度。例如,如果我有['A', 'B', 'C', 'D', 'E', 'F'],我移动N=2,我希望有['A+B', 'B+C', 'C+D', 'D+E', 'E+F']。你能推荐一个合适的Python方法吗?谢谢
['A', 'B', 'C', 'D', 'E', 'F']
['A+B', 'B+C', 'C+D', 'D+E', 'E+F']
使用列表理解:
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()
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 package 有more_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')
使用列表理解:
输出:
或者,如果您真的想对元素求和而不是创建一个字符串,您可以只使用
sum()
输出:
当然,这可以通过使用标准库工具来实现,但是您可能想看看nicemore-itertools package 有more_itertools.windowed
输出:
相关问题 更多 >
编程相关推荐