如何在Python中声明数组?


当前回答

你不需要在Python中声明任何东西。你只需使用它。我建议你从http://diveintopython.net开始。

其他回答

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

array=[0]*element_count

我有一个字符串数组,需要一个具有相同长度的布尔值的数组,初始化为True。这就是我所做的

strs = ["Hi","Bye"] 
bools = [ True for s in strs ]

你不需要在Python中声明任何东西。你只需使用它。我建议你从http://diveintopython.net开始。

# This creates a list of 5000 zeros
a = [0] * 5000  

您可以像使用数组一样,使用[n]符号读取和写入此列表中的任何元素。

它似乎具有与数组相同的随机访问性能。我不能说它如何分配内存,因为它还支持不同类型的混合,包括字符串和对象,如果你需要的话。

在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]相同) 附加操作是“免费的”,而一些额外的空间 插入操作是昂贵的

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

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