【问题标题】:NameError: name 'array' is not defined in pythonNameError:名称“数组”未在 python 中定义
【发布时间】:2011-10-29 06:16:32
【问题描述】:

当我想创建数组时,我得到NameError: name 'array' is not defined in python 错误,例如:

a = array([1,8,3])

我做错了什么?如何使用数组?

【问题讨论】:

  • 你真的需要一个数组,还是只需要一个列表?
  • numpy 还有一个数组函数。你是这个意思吗?如果是这样,您可能需要使用命名空间作为前缀。
  • 如果要使用numpy创建数组,需要这样做:a = np.array([1, 8, 3])。你错过了“np”。在代码中的“数组”部分前面——如果这是你想要的(即,使用 numpy 创建数组)。

标签: python arrays


【解决方案1】:

您需要从模块中导入array 方法。

from array import array

http://docs.python.org/library/array.html

【讨论】:

  • 然后我得到这个错误 TypeError: array() argument 1 must be char, not list
  • @Templar - Python 中的array 与 C 或 Java 等语言中的数组不完全一样,它们受到约束,您必须指定数组将保存的类型。您可以像使用其他语言中的数组一样使用列表,但除此之外,您必须指定您的数组包含整数。查看文档的第一部分:docs.python.org/library/array.html
  • primes = array('i', [2, 3, 5, 7, 11, 13])
【解决方案2】:

对于基本的 Python,您应该只使用 list(正如其他人已经指出的那样)。

如果您尝试使用 NumPy 并且想要一个 NumPy 数组:

import numpy as np

a = np.array([1,8,3])

如果您不知道 NumPy 是什么,您可能只想要list

【讨论】:

  • 我将添加注释,混淆可能来自于一个 numpy 数组输出为 array([1, 2, 3]) 的事实,但是您必须将它们输入为 np.array([1, 2, 3] )。 (导入import numpy as np后。)
【解决方案3】:

如果您需要一个容器来容纳一堆东西,那么列表可能是您的最佳选择:

a = [1,8,3]

类型

dir([])

从 Python 解释器查看列出支持的方法,例如 append、pop、reverse 和 sort。 列表还支持列表推导和 Python 的可迭代接口:

for x in a:
    print x

y = [x ** 2 for x in a]

【讨论】:

  • 我可以在 range(10): a[i] = b 中插入要列出的内容吗?
  • @Templar a = [b for i in range(10)] 这将创建一个新列表 [b,b,b,b,b,b,b,b,b,b]
  • 所以这意味着首先,如果我想这样使用它,我总是必须用一些随机的东西填写列表?
  • @Templar 不,你可以使用 append 方法添加到现有列表中:a = []; a.append(1); a.append(2); a 现在的值为[1,2]。您还可以使用索引表示法访问单个元素:print a[1]a[1] = 3 或切片表示法print a[:2]——打印 a 的前两个元素。
  • 这没有回答原来的问题。
【解决方案4】:

您可能不需要数组。尝试使用列表:

a = [1,8,3]

Python 列表在许多其他语言中的表现类似于动态数组。

【讨论】:

  • 票数最高的答案实际上回答了这个问题。保持...防御性和不假思索。
【解决方案5】:

你需要导入数组。

from numpy import array

【讨论】:

    猜你喜欢
    • 2013-01-24
    • 2013-01-26
    • 1970-01-01
    • 2012-01-31
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多