tuple的多元素操作

tuple的多元素操作

对i=[(1,2),(3,4)]
可以实现j= [i+j for i,j in i]
如果我要对[1,2,3,4]也进行这种两两相加怎么处理得到j。
可能很菜,但google了一阵都没有找到有效方法。
i=[1,2,3,4]
j=[x+y for x,y in i[0:4:2],i[1:4:2]]

研究了半天,呵呵


QUOTE:
原帖由 8913845 于 2008-8-22 10:37 发表
i=[1,2,3,4]
j=[x+y for x,y in i[0:4:2],i[1:4:2]]

研究了半天,呵呵

貌似不对?为啥得到的是[4, 6]?
的确,看来还得在研究研究
>>> i = [1,2,3,4]
>>> j = [ i[x] + i[y] for (x,y) in zip(range(0,len(i),2), range(1,len(i),2))]
>>> print j
[3, 7]
这个应该是最简单的了:
i=[1,2,3,4]
print [i[m]+i[m-1] for m in range(1, len(i), 2)]


QUOTE:
原帖由 jjj137 于 2008-8-22 11:09 发表
这个应该是最简单的了:
i=[1,2,3,4]
print [i[m]+i[m-1] for m in range(1, len(i), 2)]

同意
不错。


[Copy to clipboard] [ - ]
CODE:
>>> i=range(1,5)
>>> map(sum, zip(i[::2],i[1::2]))
[3, 7]
>>>



QUOTE:
原帖由 retuor 于 2008-8-22 17:57 发表

>>> i=range(1,5)
>>> map(sum, zip(i[::2],i[1::2]))
[3, 7]
>>>

听说不推荐使用map?