【发布时间】:2015-06-18 14:21:01
【问题描述】:
我有一个函数,我想将列表理解作为输入传递给它。我收到关于 my_list 未定义的错误。我知道我可以将my_list 放在函数之外,但实际上该列表是作为函数的一部分生成的。
实际定义比较复杂,这里是简化的例子:
def my_def(list_comp):
global my_list
my_list = [[1,2],[3,4]]
list_comp_output = list_comp
return list_comp_output
print my_def([x[1] for x in my_list])
【问题讨论】:
-
[x[1] for x in my_list]是一个列表推导,它产生一个列表,这个列表而不是推导传递给函数。所以你的简化函数返回输入列表并修改my_list -
在调用
my_def([x[1] for x in my_list])时,python会计算表达式[x[1] for x in my_list]并将结果传递给my_def...my_list需要在调用函数时定义...也是结果是静态的,所以即使你改变my_list它也不会改变 -
另外,如果您的最终目标是创建一个函数,将某种函数(如 lambda x: x[1])应用于列表的所有元素......它已经存在,它是调用映射 => 见
map函数
标签: python python-2.7 list-comprehension