导入运算符时出错 (Python)

Posted

技术标签:

【中文标题】导入运算符时出错 (Python)【英文标题】:Errors while importing Operator (Python) 【发布时间】:2021-10-28 17:08:01 【问题描述】:

在导入 Operator 并收到错误的几次尝试后,我有点困惑。除了几个示例之外,我还分享了一个 python 文档链接以供参考。

我期望下面发生的是 operator 将运行该产品并在 data 列表中乘以 3 * 4,答案将从 [3, 12....] 开始,然后将 12 乘以下一个元素“6”到给,[3, 12, 72...]。但是在这里导入 Operator 没有按预期工作?

我期望这个问题的输出是:

[3, 12, 72, 144, 144, 1296, 0, 0, 0, 0]

在PythonTutor.com 中运行以下代码给我一个错误:

ImportError: cannot import name 'operator'
from itertools import operator

data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
list(accumulate(data, operator.mul))

我在 Jupyter notebook 中运行时遇到了相同类型的错误:

ImportError                               Traceback (most recent call last)
<ipython-input-1-bc61652bebb8> in <module>
----> 1 from itertools import operator
      2 
      3 data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
      4 list(accumulate(data, operator.mul))

ImportError: cannot import name 'operator' from 'itertools' (unknown location)

我已经拼写检查了大约 100 次,并且在 PythonTutor 和 Jupyter NB 上都运行了这些检查,但两者都给了我错误 - 这可能是 itertools 的问题吗?

以下来自 Python 文档。我用的是第一种情况:

operator.mul(a, b)

我会分享给你参考:Here

   ----> operator.mul(a, b)
    operator.__mul__(a, b)
    Return a * b, for a and b numbers.

为什么这不起作用,我该如何解决?

【问题讨论】:

您能与我们分享您的预期输出吗?你想在这里实现什么?恐怕这可能是xyproblem.info 【参考方案1】:

operator 是它自己的模块,不是itertools 的一部分:

import itertools
import operator

请注意,itertools.accumulate 不会修改给定的可迭代对象。它返回一个您在上面没有使用的新对象。考虑将其分配给一个新变量:

data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
accumulated_list = list(itertools.accumulate(data, operator.mul))

【讨论】:

以上是关于导入运算符时出错 (Python)的主要内容,如果未能解决你的问题,请参考以下文章

java数字运算结果太大,出错怎么办

实现重载运算符'<<'时出错 - C++

使用扩展运算符更新 usehook 对象时出错

应用 PIVOT 运算符时出错

Pyspark - 将数据保存到 Hive 表时出错“未解析的运算符'InsertIntoTable HiveTableRelation'”

QT:重载 Qdatastream 中的“<<”运算符时出错