如何在Python中声明数组?

620 投票
17 回答
2448290 浏览
提问于 2025-04-15 14:46

我该如何在Python中声明一个数组呢?

17 个回答

143

其实你并不是在“声明”东西,而是这样在Python里创建一个数组:

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

想了解更多信息,可以查看数组模块:http://docs.python.org/library/array.html

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

192

这个话题在Python中其实挺复杂的。

实用的回答

数组在Python中是用 list 这个类来表示的(可以参考 这个链接,别把它和 生成器 混淆了)。

这里有一些使用示例:

# 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的 list 实际上是一个真实数组的包装,它里面存储的是对元素的引用。而且,这个底层数组会预留一些额外的空间。

这带来的后果是:

  • 随机访问非常便宜(比如 arr[6653]arr[0] 的访问速度是一样的)
  • 如果有额外的空间,append 操作几乎是免费的
  • insert 操作就比较贵了

可以查看这个 很棒的操作复杂度表

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

414
variable = []

现在,variable指向一个空列表*

当然,这只是一个赋值,不是声明。在Python中,无法说“这个变量永远只能指向一个列表”,因为Python是动态类型的。


*Python内置的默认类型叫做列表,而不是数组。它是一个有序的容器,可以有任意长度,能够存放各种不同类型的对象(类型可以混合,不用担心)。这和array模块不一样,后者提供的类型更接近C语言中的array类型;在这个模块中,内容必须是同一种类型的(都得是一样的),但长度仍然是动态的。

撰写回答