2012-07-02 55 views
1

所以我有一個列表,比如L = [0,1,2,3];我想對子列表[0,1],[1,2],[2,3]中的每個值應用一個函數(帶有兩個參數),然後生成另一個新值列表。 也就是說[f(0,1),f(1,2),f(2,3)]列表子集的功能列表

我已經找遍了,似乎無法找到答案。

任何幫助將不勝感激,

謝謝, 戴夫

編輯:我使用Python。

+0

這是Python嗎? – Dair

+1

這是針對特定的編程語言嗎? – Neil

+0

'zipWith f list(tail list)',如果你可以使用Haskell。 –

回答

2
result = [f(*args) for args in zip(L, L[1:])] 

或者:

result = map(f, L[:-1], L[1:]) 

使用itertools函數,需求生成結果的懶惰版本:

it = starmap(f, izip(L, islice(L, 1, None))) 

或者:

it = imap(f, L, islice(L, 1, None)) 

或者如果L是一個任意迭代:

a, b = tee(L) 
it = imap(f, a, islice(b, 1, None)) 
+0

真的很酷的答案 – pyfunc