如何在循环上运行一个函数,以便所有结果直接进入列表,是否有办法运行一个作用于列表中所有值的函数?
答案 0 :(得分:7)
有几种方法可以在循环上运行一个函数 - 你可以使用列表理解
test = list('asdf')
[function(x) for x in test]
并使用该结果
或者您可以使用地图功能
test = list('asdf')
map(function, test)
第一个答案是更“pythonic”,而第二个答案更具功能性。
编辑:第二种方式也快得多,因为它没有运行任意代码来调用函数,而是使用map
直接调用函数,这是用C实现的。
答案 1 :(得分:1)
您的问题需要澄清。
new_list= [yourfunction(item) for item in a_sequence]
您的函数应该在其代码中使用某种形式的迭代来处理序列中的所有项,例如:
def yourfunction(sequence):
for item in sequence:
…
然后你只需用一个序列(即一个列表,一个字符串,一个迭代器等)来调用它
yourfunction(range(10))
yourfunction("a string")
因人而异。
答案 2 :(得分: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]