如何在Python中声明数组?


当前回答

JohnMachin的评论才是真正的答案。 在我看来,所有其他答案都只是变通方法! 所以:

array=[0]*element_count

其他回答

继Lennart之后,还有实现同构多维数组的numpy。

计算时,使用numpy数组:

import numpy as np

a = np.ones((3,2))        # a 2D array with 3 rows, 2 columns, filled with ones
b = np.array([1,2,3])     # a 1D array initialised using a list [1,2,3]
c = np.linspace(2,3,100)  # an array with 100 points beteen (and including) 2 and 3

print(a*1.5)  # all elements of a times 1.5
print(a.T+b)  # b added to the transpose of a

这些numpy数组可以从磁盘保存和加载(甚至压缩),具有大量元素的复杂计算像c一样快。

多用于科学环境。更多信息请看这里。

在Python中,这是一个非常复杂的主题。

实际回答

数组由类列表表示(请参阅参考,不要将它们与生成器混合)。

看看用法示例:

# empty array
arr = [] 

# init with values (can contain mixed types)
arr = [1, "eels"]

# get item by index (can be negative to access end of array)
arr = [1, 2, 3, 4, 5, 6]
arr[0]  # 1
arr[-1] # 6

# get length
length = len(arr)

# supports append and insert
arr.append(8)
arr.insert(6, 7)

理论的答案

实际上,Python的列表是一个实际数组的包装器,其中包含对项的引用。此外,创建底层数组时还使用了一些额外的空间。

这样做的后果是:

随机访问非常便宜(arr[6653]与arr[0]相同) 附加操作是“免费的”,而一些额外的空间 插入操作是昂贵的

看看这个令人敬畏的操作复杂度表。

另外,请看看这张图,在这里我试图展示数组,引用数组和链表之间最重要的区别:

你实际上不需要声明东西,但这是在Python中创建数组的方法:

from array import array
intarray = array('i')

有关更多信息,请参阅数组模块:http://docs.python.org/library/array.html

现在可能你不想要数组,而是一个列表,但其他人已经回答了这个问题。:)

我通常只写a =[1,2,3],这实际上是一个列表,但对于数组,看看这个正式的定义