2012-10-10 14 views
4

可能重複:
Python: For each list element apply a function across the list如何通過項目週期中的列表,並每個項目獲得送入功能

例如,假設我有一個數組或列表

myList = [a,b,c,d] 

我有一個函數可以產生一個隨機數。

我該如何瀏覽列表,並讓該列表中的每個 項都收到由 函數生成的隨機數並添加到項中?因此,如果'a'是列表中的第一個,'a'進入隨機數(假設爲5)的函數,並且將其自身添加到'a',則結果應該是'[a +5,b + .......]。

回答

4

您使用list comprehension

[func(elem) for elem in lst] 

爲了您的具體的例子,你可以使用求和值的表達式:

[elem + func() for elem in myList] 

其中func()回報您的隨機數。

1

使用map()功能,適用功能的迭代每個項目並返回結果的列表:

def myfunc(x): 
    return x ** 2 

>>> map(func, [1,2,3]) 
[1, 4, 9] 
0

我假設你在談論的整數。這個小腳本應該做你想做的:

import random 

def gen_rand(number): 
    generated = random.randint(1, 10) # you can specify whatever range you want 
    print generated 
    return number + generated 

myList = [1,2,3,4,5] 
print str(myList) 
myList = [gen_rand(item) for item in myList] 
print str(myList) 

或者你可以使用map函數而不是for循環。 更換

myList = [gen_rand(item) for item in myList] 

myList = map(gen_rand,myList) 
+0

沒有必要在這裏使用一個切片分配新建分配FY。 'myList = [...]'工作得很好,沒有處理切片的開銷。 –

+0

我編輯了答案。感謝您指出了這一點 :) –

0

如果你需要一個襯墊:-)

myList = [1,2,3,4]  
[ i + map(lambda i: random.randint(10,20), myList)[index] for index, i in enumerate(myList) ] 
相關問題