def fivetimes(anylist):
return anylist * 5
正如你看到的,如果你給一個列表的說法,沒有必要對任何轉讓任何以「相乘的給定次數,並返回輸出」。你講一個給出的列表; 如果不是(最自然的方式)作爲你的函數的參數,它是如何給予給你的?不是那麼重要 - 如果它是一個全局變量,作爲參數的對象的屬性等等,這仍然不需要任何分配。
如果你是「homeworkically」從使用*
運營商列表的禁止,只需要實現它自己,這需要分配,但沒有聲明:
def multiply_the_hard_way(inputlist, multiplier):
outputlist = []
for i in range(multiplier):
outputlist.extend(inputlist)
return outputlist
你可以簡單地使空列表「神奇的出現」:不需要將其「聲明」爲任何任何東西,它是一個空列表,Python編譯器知道它以及您或代碼的任何讀者。將其綁定到名稱outputlist
並不要求您執行任何特殊的儀式,只是綁定(又名作業)本身:名稱沒有類型,只有對象有類型...這就是Python! - )
編輯:OP現在說輸出不能是一個列表,而是int,float,或者可能是字符串,並且他沒有被指示什麼。我要求澄清 - 將列表乘以一個列表總是返回一個列表,顯然他必須表示與他原先所說的不同的東西,他必須乘以一個列表。同時,這是另一個閱讀心靈的嘗試。也許他必須返回一個列表,其中輸入列表的每個項目都乘以相同的因子(無論該項目是int,float,string,list,...)。那好:
define multiply_each_item(somelist, multiplier):
return [item * multiplier for item in somelist]
看,不用動手^ H^H^H^H^^ h分配。 (這被稱爲「列表理解」,順便說一句)。他需要(比如說)將每個列表項目乘以(如果不是這樣,但是我的頭腦可能會受到我的錫紙帽子的干擾,因爲它需要(比如說)將每個列表項目乘以如果他們是同一類型的第一個項目,但回報他們爲他們的原始類型,從而例如
>>> mystic(['zap', 1, 23, 'goo'], 2)
['zapzap', 11, 2323, 'googoo']
>>> mystic([23, '12', 15, 2.5], 2)
[46, '24', 30, 4.0]
即使這樣高規格的神祕可以accomodated ...:
>>> def mystic(alist, mul):
... multyp = type(alist[0])
... return [type(x)(mul*multyp(x)) for x in alist]
...
...雖然我非常喜歡d這個規範實際上是編碼在這個家庭作業的神祕符文中的。幾乎任何一個精確的規範都可以被實現,或者被證明是不可能的(通過要求你解決暫停問題或者要求P == NP,比如;-))。這可能需要一些工作(例如「證明四色定理」);但是仍然少於神奇地描述實際規格是什麼,或者來自一系列相互矛盾的觀察,沒有例子等。雖然我們在日常工作中作爲軟件開發人員(當我們不得不面對的一切都是功課時,我們都會遇到很多這樣的情況),我們當然會遇到很多這樣的案例(並且必須解決它們才能贏得我們的日常麪包; )。
EditEdit:終於看到了一個精確的規格我想指出,我已經實施了一個,反正這裏又來了:
def multiplyItemsByFour(argsList):
return [item * 4 for item in argsList]
EditEditEdit:最後/終於看到了一個更精確的規格,用(豪華! - )例子:
Input: ('a','b') Output: 'aaaabbbb' Input: (2,3,4) Output: 36
那麼接下來有什麼希望它的總和(你不能使用sum
,因爲它不會在輸入列表中的項目的處理字符串),分別乘以四。我首選的方案:
def theFinalAndTrulyRealProblemAsPosed(argsList):
items = iter(argsList)
output = next(items, []) * 4
for item in items:
output += item * 4
return output
如果你使用一些結構,如內置插件items
和iter
的禁止,還有許多其他的可能性(略遜一籌的),例如:
def theFinalAndTrulyRealProblemAsPosed(argsList):
if not argsList: return None
output = argsList[0] * 4
for item in argsList[1:]:
output += item * 4
return output
對於一個空的argsList
,第一個版本返回[]
,第二個返回None
- 不知道你應該在那個角落裏幹什麼。
請確保您在考試前閱讀了Python。大多數動態語言如Python不需要類型聲明 – Perpetualcoder 2009-10-04 02:15:43
對於downvoter,我意識到這是作業,但問題與實際的作業分配無關。這個問題可以適用於任何事情。 – Austin 2009-10-04 02:24:31
請解釋「乘以一個列表」的含義。從評論到其中一個答案,很明顯,你不是指Python中運算符「*」的普通語義(即複製列表)。 – 2009-10-04 02:43:42