python列表中成对求和的值
假设我有一个清单:python列表中成对求和的值,python,list,for-loop,Python,List,For Loop,假设我有一个清单: alist = [1, 3, -5, 4, 2, -1] 如何通过添加下一个值来更改列表中的每个值?例如,第一个值变为4,第二个值变为-2,等等 我想在列表中用表示数字:number=number+#下一步是什么? 我该怎么做呢?首先,你拥有的是一个列表,而不是一个列表。元组是不可变的,这意味着您不能重新分配它们的元素 以下是一种创建新列表的方法,无需更改原始列表: >>> alist [1, 3, -5, 4, 2, -1] >>> [
alist = [1, 3, -5, 4, 2, -1]
如何通过添加下一个值来更改列表中的每个值?例如,第一个值变为4,第二个值变为-2,等等
我想在列表中用表示数字:number=number+#下一步是什么?
我该怎么做呢?首先,你拥有的是一个列表,而不是一个列表。元组是不可变的,这意味着您不能重新分配它们的元素 以下是一种创建新列表的方法,无需更改原始列表:
>>> alist
[1, 3, -5, 4, 2, -1]
>>> [i+j for i,j in zip(alist, alist[1:])]
[4, -2, -1, 6, 1]
请注意,由于不考虑列表中的最后一个元素,因此最后只剩下一个元素
下面是一种方法,通过更改原始列表(不创建新列表):
请注意,列表中的最后一个元素未被触及。这将删除最后一个元素,因为最后一个元素没有“下一步”:
>>> alist = (1, 3, -5, 4, 2, -1)
>>> newlist = [a + b for a, b in zip(alist, alist[1:])]
>>> newlist
[4, -2, -1, 6, 1]
或者,(在python 2中)将保留它:
import itertools
>>> newlist = [a + b for a, b in itertools.zip_longest(alist, alist[1:], fillvalue=0)]
>>> newlist
[4, -2, -1, 6, 1, -1]
简单的方法是:
[alist[i] + alist[i+1] for i in range(len(alist)-1)]
对于地图和lambdas的爱好者:
map(lambda x: sum(x), zip(alist, alist[1:]))
或者干脆
map(sum, zip(alist, alist[1:]))
最后一个数字怎么了?你在做一些假设。@Julio:是的。但从某种程度上说,这真的没什么帮助,因为这个问题没有被详细说明:)现在至少你更新的答案有了更多的上下文。@mhlester啊,刚刚意识到这一点-在你评论时正在编辑:)
map(sum, zip(alist, alist[1:]))
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
alist = [1, 3, -5, 4, 2, -1]
new_alist = [a+b for a,b in pairwise(alist)] # => [4, -2, -1, 6, 1]