我想声明一个数组,并且无论列表框中存在的组名称如何,都应该删除列表框中存在的所有项目。任何人都可以帮助我用 Python 编码吗?我使用的是 WINXP 操作系统和 Python 2.6。
在 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
在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上发现的一个很棒的方法,但答案也适用于单维数组:
# 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 ) ]
将 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.]]
所述。 现在,如果你想迭代一个长列表,内存中将会有很多跳转,与“连续”存储在内存中的数组相比,你的性能会降低,这意味着所有元素都被一个接一个地存储。如果列表以这种方式损坏,由于 Temporal Locality,CPU 将花费更少的时间访问该内存。 所以如果你希望你的列表以这种方式存储,你可以使用 numpy 数组。但 numpy 数组没有实现
Geometric Expansion。所以你可以创建一个在 python 中执行此操作的类。每次我们添加一个元素时,列表都会扩展为其大小的 x 倍(其中 x 在不同语言中的实现方式不同)。这种类型的动态数组无法像 python 列表那样存储不同类型的数据(这本身并不是一件好事),但它的迭代速度比 python 列表更快。 使用 numpy 实现动态数组已在
此处和此存储库中得到解决。