python - 导入运算符时出错 (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.
为什么这不起作用,我该如何解决?
解决方案
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))
推荐阅读
- xslt - 使用 xsl:accumulator 跟踪两个 PI 之间的文本节点
- time-series - 如何处理时间列的值格式为 2018-09-15T07:44:00 的多变量时间序列数据
- python - Python中的嵌套集和字典是反模式吗?
- c# - 如何在不使用实体框架中的 for 循环的情况下更新列表?
- heroku - 如何将第三方存储库添加到 Heroku 实例?
- c++ - .exe 触发了断点,并且到处抛出异常
- css - 用于 Ipad 分辨率的响应式布局 css 的最佳实践
- xamarin.ios - 后台处理功能需要哪些 Info.plist 条目?
- sql - 使用其他行的数据更新同一表中的行 SQL
- c++-winrt - 为什么没有 SelectorT?