当前位置: 首页 > 面试题库 >

Python-使用列表推导只是副作用是Pythonic吗?

丁宏盛
2023-03-14
问题内容

考虑一下我要调用的函数的副作用,而不是返回值(例如打印到屏幕,更新GUI,打印到文件等)。

def fun_with_side_effects(x):
    ...side effects...
    return y

现在,使用列表推导功能将此功能称为Pythonic:

[fun_with_side_effects(x) for x in y if (...conditions...)]

请注意,我不会将列表保存在任何地方

还是我应该这样称呼这个函数:

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)

哪个更好?为什么?


问题答案:

这样做是非常反Python的,任何经验丰富的Pythonista都会为你带来麻烦。中间列表在创建之后就被丢弃了,它可能非常大,因此创建起来很昂贵。



 类似资料:
  • 问题内容: 在有效的去它说,这些类型的进口平均副作用。我已经阅读了几个SO答案,但没有一个解释什么是。有人可以详细说明这个词吗? 问题答案: 当他们说“导入副作用”时,它们实际上是指静态使用的代码/功能。这意味着仅导入软件包将导致一些代码在应用程序启动时执行,从而使我的系统处于与未导入该软件包的状态不同的状态(例如示例中注册处理程序的代码,它也可能放下config文件,修改光盘上的资源等)。有效的

  • 我有一个关于转发推荐信的具体问题。(我认为)我理解R值引用和,但理解转发引用有困难: 是,这很好。如果是类型,为什么它打印“lvalue”,而我们需要?我的意思是,从到的转换在哪里?

  • 问题内容: 我这样做: 要么 我是Python的新手,所以我仍在探索语法,并且我想在此方面提供一些建议。 问题答案: 试试这个:Python属性 示例代码是:

  • 问题内容: 我有一个Python脚本,该脚本接受一个整数列表作为输入,我需要一次处理四个整数。不幸的是,我无法控制输入,或者将其作为四元素元组的列表传递。目前,我正在以这种方式对其进行迭代: 不过,这看起来很像“C-think”,这让我怀疑有一种更像蟒蛇的方式来处理这种情况。列表在迭代后被丢弃,因此不需要保留它。也许这样更好? 不过,仍然感觉不太正确。 问题答案: 从Python的itertool

  • 问题 你有一个对象数组,想将它们映射到另一个数组,类似于 Python 的列表推导。 解决方案 使用列表推导,但不要忘记还有 [mapping-arrays]( http://coffeescript-cookbook.github.io/chapters/arrays/mapping-arrays) 。 electric_mayhem = [ { name: "Doctor Teeth", in

  • 问题内容: 是否可以使用列表理解来模拟类似sum()的东西? 例如-我需要计算列表中所有元素的乘积: 相同的代码: 问题答案: 没有; 列表理解会生成一个与其输入一样长的列表。您将需要Python的其他功能工具之一(在本例中为特定情况)将序列折叠为单个值。