2014-03-06 60 views
1

我剛開始學習Python的昨天。任務是隨機功能,使INT轉換爲字符串添加到地圖蟒蛇

c=["red", "blue", "green", "yellow", "purple", "orange", "white", "black"] 

於是我就用 random.choice(C)

要創建50我會想到建立一個功能列表生成5種顏色然後將其添加到地圖( ),使用函數來添加隨機顏色和通過範圍(1,51的迭代)

要將數字1 2 3 4等實質上改變到一個隨機選擇的顏色。

我不知道我怎麼能更改號碼爲random.choice(C) - 那麼,什麼功能,我可以使用的地圖即

print map('function', range(1,51)) 

我想過使用拉姆達像

>>> sums = lambda x:(x-x)+(random.choice(c)) 
>>> print map(sums,range(1,51)) 

,但我得到了,

Traceback (most recent call last): 
    File "<pyshell#15>", line 1, in <module> 
    print map(sums,range(1,51)) 
    File "<pyshell#14>", line 1, in <lambda> 
    sums = lambda x:(x-x)+(random.choice(c)) 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

但OBV沒有工作,因爲IM +一個int字符串

我試圖通過文檔,以尋找的東西,但有沒有運氣

什麼我可以做

+3

你能提供一些示例輸出? –

回答

2

聽起來像是你想提供一個功能map它放棄給它的參數,並生成一個完全獨立的價值。允許在表達式體中使用一個lambda,其中的參數是從不使用的。您不必嘗試用(x-x)欺騙解釋器。

sums = lambda x: random.choice(c) 
print map(sums, range(1,51)) 
+0

在賦值規範中它確實使用映射,儘管列表理解看起來更容易。 – dhali

4

任何提示,你可以像這樣50種顏色:

>>> c = ["red", "blue", "green", "yellow", "purple", "orange", "white", "black"] 
>>> for _ in range(50): 
...  random.choice(c) 
...  
... 
'blue' 
'red' 
'yellow' 
... 

要生成使用列表理解:

>>> colors = [random.choice(c) for _ in range(50)] 
>>> colors 
['green', 'red', 'green', 'orange', 'orange', 'black', 'black', 'purple', 'red', 
'black', 'yellow', 'yellow', 'white', 'purple', 'orange', 'white', 'red', 'gree 
n', 'black', 'blue', 'orange', 'green', 'orange', 'blue', 'white', 'blue', 'oran 
ge', 'black', 'orange', 'green', 'black', 'green', 'blue', 'orange', 'blue', 'gr 
een', 'green', 'white', 'red', 'green', 'yellow', 'yellow', 'blue', 'orange', 'p 
urple', 'green', 'black', 'yellow', 'black', 'red'] 

您可以使用map li柯本,以及:

>>> map(lambda _: random.choice(c), range(50)) 
['purple', 'yellow', 'black', 'white', 'black', 'black', 'purple', 'red', 'blue' 
, 'white', 'blue', 'white', 'yellow', 'yellow', 'white', 'blue', 'orange', 'whit 
e', 'yellow', 'black', 'green', 'white', 'blue', 'blue', 'yellow', 'red', 'red', 
'black', 'purple', 'blue', 'yellow', 'yellow', 'green', 'orange', 'purple', 're 
d', 'orange', 'red', 'blue', 'green', 'purple', 'orange', 'red', 'white', 'orang 
e', 'green', 'purple', 'white', 'green', 'green'] 

或者你甚至可以忽略的lambda_

>>> map(lambda: random.choice(c), range(50)) 

在所有版本的_表示沒有使用的變量。它可以是任何東西,如inumber。例如你的情況,你永遠不會真的想使用range函數產生的數字。這是一個慣例。

+0

'_in'在做什麼? – dhali

+1

'_'只是迭代器中游標的變量名稱。使用'_'是約定一個實際上沒有使用的變量,但在語法上是必需的。 –

+1

我已編輯答案中對評論的回覆。 – msvalkon