4

可能重复:
Python:对于每个列表元素,在列表中应用一个函数

例如,假设我有一个数组或列表

myList = [a,b,c,d]

我有一个生成随机数的函数。

如何浏览列表并让该列表中的每个项目接收由函数生成的随机数并添加到项目中?

因此,假设 'a' 是列表中的第一个,'a' 进入生成随机数(比如说 5)的函数并将其自身添加到 'a' 结果应该是 `[a+5, b+ .......]。

4

4 回答 4

4

您使用列表理解

[func(elem) for elem in lst]

对于您的具体示例,您可以使用对值求和的表达式:

[elem + func() for elem in myList]

wherefunc()返回你的随机数。

于 2012-10-10T08:40:22.693 回答
1

使用map()函数,将函数应用于可迭代的每个项目并返回结果列表:

def myfunc(x):
     return x ** 2

>>> map(func, [1,2,3])
[1, 4, 9]
于 2012-10-10T08:41:28.897 回答
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)
于 2012-10-10T08:58:13.457 回答
0

如果你需要一个班轮:-)

myList = [1,2,3,4]    
[ i + map(lambda i: random.randint(10,20), myList)[index] for index, i in enumerate(myList) ]
于 2012-10-10T13:25:34.310 回答