-3
一直試圖在一個小時內完成此操作。我不想使用全局變量,循環或默認值參數。該函數的唯一參數是一個數組,我想對數組中的每個元素執行一些操作(它不是多維的,操作類似於其值的兩倍)。帶有一個參數的遞歸函數,該參數對每個元素執行一些操作
我一直試圖通過切片清單來做到這一點,但它還沒有找到解決方案。
一直試圖在一個小時內完成此操作。我不想使用全局變量,循環或默認值參數。該函數的唯一參數是一個數組,我想對數組中的每個元素執行一些操作(它不是多維的,操作類似於其值的兩倍)。帶有一個參數的遞歸函數,該參數對每個元素執行一些操作
我一直試圖通過切片清單來做到這一點,但它還沒有找到解決方案。
那麼在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 ]
哪裏是你的代碼?你的樣本輸入是什麼?期望的輸出? – ryugie
你試圖對每個元素做什麼?如果你把它看作別人的帖子,人們會閱讀這個問題,你會理解什麼嗎? –
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune