迭代列表中的每两个元素我该怎么做for循环还是一个列表理解,这样每次迭代就给了我两个元素?l = [1,2,3,4,5,6]for i,k in ???:
print str(i), '+', str(k), '=', str(i+k)产出:1+2=3
3+4=7
5+6=11
3 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
繁星淼淼
TA贡献1775条经验 获得超11个赞
pairwise()
grouped()
from itertools import izipdef pairwise(iterable): "s -> (s0, s1), (s2, s3), (s4, s5), ..." a = iter(iterable) return izip(a, a)for x, y in pairwise(l): print "%d + %d = %d" % (x, y, x + y)
from itertools import izipdef grouped(iterable, n): "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..." return izip(*[iter(iterable)]*n)for x, y in grouped(l, 2): print "%d + %d = %d" % (x, y, x + y)
izip
zip()
import
.
N.B.pairwise
itertools
s -> (s0, s1), (s1, s2), (s2, s3), ...
![?](http://img1.sycdn.imooc.com/54584e120001811202200220-100-100.jpg)
吃鸡游戏
TA贡献1829条经验 获得超7个赞
data = [1,2,3,4,5,6]for i,k in zip(data[0::2], data[1::2]): print str(i), '+', str(k), '=', str(i+k)
data[0::2]
意味着创建以下元素的子集集合 (index % 2 == 0)
zip(x,y)
从x和y集合创建一个元组集合,相同的索引元素。
![?](http://img1.sycdn.imooc.com/54586653000151cd02200220-100-100.jpg)
守着一只汪
TA贡献1872条经验 获得超3个赞
>>> l = [1,2,3,4,5,6]
>>> zip(l,l[1:])
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
>>> zip(l,l[1:])[::2]
[(1, 2), (3, 4), (5, 6)]
>>> [a+b for a,b in zip(l,l[1:])[::2]]
[3, 7, 11]
>>> ["%d + %d = %d" % (a,b,a+b) for a,b in zip(l,l[1:])[::2]]
['1 + 2 = 3', '3 + 4 = 7', '5 + 6 = 11']
添加回答
举报
0/150
提交
取消