0

如何在循环上运行一个函数,以便所有结果直接进入一个列表,有没有办法运行一个作用于列表中所有值的函数?

4

3 回答 3

7

有几种方法可以在这样的循环上运行函数 - 您可以使用列表推导

test = list('asdf')
[function(x) for x in test]

并使用该结果

或者你可以使用地图功能

test = list('asdf')
map(function, test)

第一个答案更“pythonic”,而第二个答案更实用。

编辑:第二种方式也快得多,因为它不是运行任意代码来调用函数,而是直接调用函数 using map,这是用 C 实现的。

于 2008-11-03T16:55:55.477 回答
1

你的问题需要澄清。

在循环上运行函数

new_list= [yourfunction(item) for item in a_sequence]

运行作用于列表中所有值的函数

您的函数应该在其代码中具有某种形式的迭代来处理序列的所有项目,例如:

def yourfunction(sequence):
    for item in sequence:
        …

然后你只需用一个序列(即一个列表、一个字符串、一个迭代器等)调用它

yourfunction(range(10))
yourfunction("a string")

YMMV。

于 2008-11-03T16:54:38.100 回答
0

这个例子展示了如何做(在解释器中运行它)

>>> def square(x):
...  return x*x
...
>>> a = [1,2,3,4,5,6,7,8,9]

>>> map(square,a)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
于 2008-11-03T16:54:04.920 回答