如何在Python中声明数组?
我该如何在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
类型;在这个模块中,内容必须是同一种类型的(都得是一样的),但长度仍然是动态的。