python - 将列表推导式传递给 Python 中的函数

标签 python python-2.7 list-comprehension

我有一个函数,我想将列表理解传递给它作为输入。我收到有关 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/

相关文章:

python - 当由 '..' Python 分隔时,将两个整数附加到列表

python - 从 Scrapy pipeline 中培养 close spider

python - 解析内部带有空格的参数引用列表的最有效方法

python-3.x - 如何在 Python 3x 中将字符串列表转换为整数列表

python - 提高非常大的数据帧上的迭代性能

python - Scapy 如何获取 ping 时间?

python - 使用正则表达式从源文件中删除注释

python - Pandas 中的 Groupby 和累计计数

python:遍历具有列表值的字典

列表理解中函数的 Pythonic 改进?