在Python中如何声明动态数组

问题描述 投票:0回答:5

我想声明一个数组,并且无论列表框中存在的组名称如何,都应该删除列表框中存在的所有项目。任何人都可以帮助我用 Python 编码吗?我使用的是 WINXP 操作系统和 Python 2.6。

python listbox
5个回答
103
投票

在 Python 中,

list
是动态数组。您可以像这样创建一个:

lst = [] # Declares an empty list named lst

或者你可以用物品填充它:

lst = [1,2,3]

您可以使用“追加”添加项目:

lst.append('a')

您可以使用

for
循环迭代列表的元素:

for item in lst:
    # Do something with item

或者,如果您想跟踪当前索引:

for idx, item in enumerate(lst):
    # idx is the current idx, while item is lst[idx]

要删除元素,可以使用del命令或remove函数,如下所示:

del lst[0] # Deletes the first item
lst.remove(x) # Removes the first occurence of x in the list

但请注意,不能迭代列表并同时修改它;为此,您应该迭代列表的一部分(基本上是列表的副本)。如:

 for item in lst[:]: # Notice the [:] which makes a slice
       # Now we can modify lst, since we are iterating over a copy of it

9
投票

在Python中,动态数组是来自数组模块的“数组”。例如。

from array import array
x = array('d')          #'d' denotes an array of type double
x.append(1.1)
x.append(2.2)
x.pop()                 # returns 2.2

此数据类型本质上是内置“list”类型和 numpy“ndarray”类型之间的交叉。与 ndarray 一样,数组中的元素是 C 类型,在初始化时指定。它们不是指向Python对象的指针;这可能有助于避免一些误用和语义错误,并且“适度”提高性能。 但是,除了一些字符串和文件转换方法之外,该数据类型与 python 列表具有本质上相同的方法。它缺乏 ndarray 的所有额外数字功能。

有关详细信息,请参阅

https://docs.python.org/2/library/array.html


6
投票
不同堆栈溢出帖子

上发现的一个很棒的方法,但答案也适用于单维数组: # Create an 8 x 5 matrix of 0's: w, h = 8, 5; MyMatrix = [ [0 for x in range( w )] for y in range( h ) ] # Create an array of objects: MyList = [ {} for x in range( n ) ]

我喜欢这个,因为您可以在一行中动态指定内容和大小! 

路上还有一个:

# Dynamic content initialization: MyFunkyArray = [ x * a + b for x in range ( n ) ]



0
投票

将 numpy 导入为 np

n = 2 new_table = np.empty(shape=[n,1]) new_table[0,0] = 2 new_table[1,0] = 3 print(new_table)

上面的示例假设我们知道需要 1 列,但我们希望动态分配行数(在本例中,所需的行数等于 2)

输出如下所示:

[[2.] [3.]]


0
投票
here

所述。 现在,如果你想迭代一个长列表,内存中将会有很多跳转,与“连续”存储在内存中的数组相比,你的性能会降低,这意味着所有元素都被一个接一个地存储。如果列表以这种方式损坏,由于 Temporal Locality,CPU 将花费更少的时间访问该内存。 所以如果你希望你的列表以这种方式存储,你可以使用 numpy 数组。但 numpy 数组没有实现

Geometric Expansion

。所以你可以创建一个在 python 中执行此操作的类。每次我们添加一个元素时,列表都会扩展为其大小的 x 倍(其中 x 在不同语言中的实现方式不同)。这种类型的动态数组无法像 python 列表那样存储不同类型的数据(这本身并不是一件好事),但它的迭代速度比 python 列表更快。 使用 numpy 实现动态数组已在

此处

此存储库中得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.