首页 > 解决方案 > 导入运算符时出错 (Python)

问题描述

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

我期望下面发生的是,operator它将运行产品并在列表中乘以 3 * 4,data答案将开始[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 笔记本中运行它时遇到了相同类型的错误:

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)

我将分享供您参考:这里

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

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

标签: pythonpython-3.ximportmodule

解决方案


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))

推荐阅读