2017-05-12 61 views
-3

一直試圖在一個小時內完成此操作。我不想使用全局變量,循環或默認值參數。該函數的唯一參數是一個數組,我想對數組中的每個元素執行一些操作(它不是多維的,操作類似於其值的兩倍)。帶有一個參數的遞歸函數,該參數對每個元素執行一些操作

我一直試圖通過切片清單來做到這一點,但它還沒有找到解決方案。

+3

哪裏是你的代碼?你的樣本輸入是什麼?期望的輸出? – ryugie

+0

你試圖對每個元素做什麼?如果你把它看作別人的帖子,人們會閱讀這個問題,你會理解什麼嗎? –

+2

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune

回答

0

那麼在Python中有幾種習慣用法。第一種是使用列表理解

print([x * 2 for x in [0,1,2,3,4]]) 
# [ 0, 2, 4, 6, 8 ] 

使用map功能

print(list(map(lambda x: x * 2, [0,1,2,3,4]))) 
# [ 0, 2, 4, 6, 8 ] 

但是,當然,你可以寫你自己的功能也一樣,如果你想

def double_each (xs): 
    if not xs: 
    return [] 
    else: 
    return [xs[0] * 2] + double_each(xs[1:]) 

print(double_each([0,1,2,3,4])) 
# [ 0, 2, 4, 6, 8 ] 

在第二一般來說,你應該堅持列表理解或者例子tho。 double_each過度關心手動迭代列表並將變換與函數本身耦合。如果你有(例如)triple_each,quadruple_each,你會複製很多代碼。

如果你想知道什麼可能看起來像實施map,這裏是它返回一個列表(而不是迭代器),一個簡單的例子

# our map implementation 
def map (f, xs): 
    if not xs: 
    return [] 
    else: 
    return [f(xs[0])] + map(f, xs[1:]) 

# transformations 
def double (x): return x + x 
def triple (x): return x + x + x 
def quadruple (x): return x * 4 

print(map(double, [0,1,2,3,4])) 
# [ 0, 2, 4, 6, 9 ] 

print(map(triple, [0,1,2,3,4])) 
# [ 0, 3, 6, 9, 12 ] 

print(map(quadruple, [0,1,2,3,4])) 
# [ 0, 4, 8, 12, 16 ] 
相關問題