我有一个函数,我想将列表理解传递给它作为输入。我收到有关 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])
最佳答案
实际上Python 中我们拥有的只是运行时;不存在单独的编译时间1。(在解释器的范围内)。并且函数也不异常(exception)。
所以你在这里所做的就是将 my_list
定义为全局变量,并尝试在列表理解中使用它,而 python 没有定义这样的东西。
您可以只运行您的函数 1 次,然后使用该列表理解:
def my_def(list_comp):
global my_list
my_list = [[1,2],[3,4]]
list_comp_output = list_comp
return list_comp_output
my_def([])
print my_def([x[1] for x in my_list])
[2,4]
此外,我在这里没有看到任何逻辑内容:)如果您想使用全局变量,只需在模块范围内定义 if (在函数之外并将其传递给您的函数。)
def my_def(list_comp):
# do stuff with list_comp
return list_comp_output
my_list= # a costume list
li=[x[1] for x in my_list]
print my_def(li)
或更优雅地在函数中进行列表理解:
def my_def(list_comp):
return [x[1] for x in list_comp]
<小时/>
<子> 1.《学习 Python》作者:Mark Lutz
关于python - 将列表推导式传递给 Python 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30918004/