在Python中如何声明动态数组

时间:2010-05-26 07:24:29

标签: python listbox

我想声明一个数组,并且无论ListBox中存在的组名如何,都应删除ListBox中存在的所有项。任何人都可以帮我编写Python代码。我正在使用WINXP OS& Python 2.6。

4 个答案:

答案 0 :(得分:71)

在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

答案 1 :(得分:5)

在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

这个数据类型本质上是内置'列表之间的交叉。类型和numpy' ndarray'类型。像ndarray一样,数组中的元素是C类型,在初始化时指定。它们是不是指向python对象的指针;这可能有助于避免一些误用和语义错误,并且适度可以提高性能。

但是,这个数据类型与python列表基本上具有相同的方法,除了一些字符串&文件转换方法。它缺乏ndarray的所有额外数字功能。

有关详细信息,请参阅https://docs.python.org/2/library/array.html

答案 2 :(得分:1)

这是我最近在different stack overflow post 上发现的有关多维数组的一种好方法,但是答案对于一维数组也很有效:

# 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 ) ]

答案 3 :(得分:0)

您可以为 1 维动态声明一个 Numpy 数组,如下所示:

将 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.]]