2011-05-11 104 views
2

我有兩個整數列表,我想系統地操作它們的對象。例如,我有:如何計算python中兩個不同列表的元素?

A = [ a1, a2, a3, a4 ...] 
B = [ b1, b2, b3 ...] 

,我想打印是這樣的:

a1+b1 a2 
a2+b2 a3 
a3+b3 a4 

我覺得有一個 「循環」 的方式,但我不不知道如何使用「」中的兩個變量來處理」循環「。

回答

3

你可以使用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 
+1

OP實際上是想用整數操作!謝謝 – eat 2011-05-11 20:52:55

+0

@eat,我使用了字符串,因爲它們更清楚地說明了轉換。我相信OP可以弄清楚如何替換整數。 – senderle 2011-05-11 20:56:49

+0

正如其他一些帖子所說明的那樣,第一次('A [:3]')不是必須的。由'zip'輸出的列表以最短的輸入序列結束。 – senderle 2011-05-11 21:24:21

1
for i,b in enumerate(B): 
    print(A[i] + '+' + b + '\t' + A[i+1]) 
2

您正在尋找這樣簡單的東西:

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 
+0

看起來很簡單的解決方案...我會嘗試應用到我的代碼中。謝謝。 – Geparada 2011-05-11 20:59:33

2

隨着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 
1
[(a + b, c) for (a, b, c) in zip(A, B, A[1:])] 

無論A和B包含

1

這一個

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 
相關問題