【发布时间】:2008-11-03 16:46:57
【问题描述】:
如何在循环中运行一个函数,以便所有结果直接进入一个列表,有没有办法运行一个作用于列表中所有值的函数?
【问题讨论】:
-
我同意不可输入的名字,你需要澄清,用一个例子
-
@Vinko: 无法键入,但并非不可复制 :)
如何在循环中运行一个函数,以便所有结果直接进入一个列表,有没有办法运行一个作用于列表中所有值的函数?
【问题讨论】:
有几种方法可以在这样的循环上运行函数 - 您可以使用列表推导
test = list('asdf')
[function(x) for x in test]
并使用该结果
或者你可以使用地图功能
test = list('asdf')
map(function, test)
第一个答案更“pythonic”,而第二个答案更实用。
编辑:第二种方式也快很多,因为它不是运行任意代码来调用函数,而是使用 C 实现的 map 直接调用函数。
【讨论】:
您的问题需要澄清。
new_list= [yourfunction(item) for item in a_sequence]
您的函数应该在其代码中具有某种形式的迭代来处理序列的所有项目,例如:
def yourfunction(sequence):
for item in sequence:
…
然后您只需使用序列(即列表、字符串、迭代器等)调用它
yourfunction(range(10))
yourfunction("a string")
YMMV.
【讨论】:
这个例子展示了如何做(在解释器中运行)
>>> 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]
【讨论】: