我有两个整数列表,我想系统地操作它们的对象。例如,我有:如何计算python中两个不同列表的元素?
A = [ a1, a2, a3, a4 ...]
B = [ b1, b2, b3 ...]
,我想打印是这样的:
a1+b1 a2
a2+b2 a3
a3+b3 a4
我觉得有一个 “为循环” 的方式,但我不不知道如何使用“”中的两个变量来处理“”循环“。
我有两个整数列表,我想系统地操作它们的对象。例如,我有:如何计算python中两个不同列表的元素?
A = [ a1, a2, a3, a4 ...]
B = [ b1, b2, b3 ...]
,我想打印是这样的:
a1+b1 a2
a2+b2 a3
a3+b3 a4
我觉得有一个 “为循环” 的方式,但我不不知道如何使用“”中的两个变量来处理“”循环“。
你可以使用zip
:
>>> A = ['a1', 'a2', 'a3', 'a4']
>>> B = ['b1', 'b2', 'b3']
>>> zip(A[:3], B, A[1:])
[('a1', 'b1', 'a2'), ('a2', 'b2', 'a3'), ('a3', 'b3', 'a4')]
>>> for a, b, c in zip(A[:3], B, A[1:]):
... print a + '+' + b + ' ' + c
...
a1+b1 a2
a2+b2 a3
a3+b3 a4
for i,b in enumerate(B):
print(A[i] + '+' + b + '\t' + A[i+1])
您正在寻找这样简单的东西:
In []: A= [1, 2, 3, 4]
In []: B= [1, 2, 3]
In []: for k, b in enumerate(B):
..: print A[k]+ b, A[k+ 1]
..:
2 2
4 3
6 4
或许是这样的:
In []: for k, b in enumerate(B):
..: print '{}+{}\t{}'.format(A[k], b, A[k+ 1])
..:
1+1 2
2+2 3
3+3 4
看起来很简单的解决方案...我会尝试应用到我的代码中。谢谢。 – Geparada 2011-05-11 20:59:33
随着pairwise
recipe from itertools
:
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)
a = [1,2,3,4]
b = [7,8,9]
for (a1, a2), b1 in izip(pairwise(a), b):
print a1 + b1, a2
[(a + b, c) for (a, b, c) in zip(A, B, A[1:])]
无论A和B包含
这一个
l = zip(map(sum, zip(A, B)), A[1:])
将产生
[(a_1 + b_1, a_2), (a_2 + b_2, a_2), ..., (a_(i-1) + b_(i-1), a_i)]
元组的名单打印出来,
for a, b in l:
print a, b
OP实际上是想用整数操作!谢谢 – eat 2011-05-11 20:52:55
@eat,我使用了字符串,因为它们更清楚地说明了转换。我相信OP可以弄清楚如何替换整数。 – senderle 2011-05-11 20:56:49
正如其他一些帖子所说明的那样,第一次('A [:3]')不是必须的。由'zip'输出的列表以最短的输入序列结束。 – senderle 2011-05-11 21:24:21