我可以在运行时初始化数组吗?

时间:2019-11-14 16:21:44

标签: python

我在主函数(即a = [a1, a2, ... an]a = [3,3,4,1]中由用户传递了一个未知长度的数组a = [1,1,13,4,5]

在我的程序中,由于不知道数组a的长度,如何从这些变量中创建数组?

例如,假设用户传递了a = [3,3,4,1],我需要创建4个数组,其中a1具有3个元素,a2具有3个元素,a3具有4个元素,{ {1}}(含1个元素)。

这可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用for ... in遍历数组(列表)的所有元素:

for var in a:
    # do something with var

列表不需要预先分配(在向其中添加内容时,它们会动态调整大小),但是如果您确实想创建一定长度的列表,则简单的方法是乘法运算符:

a1 = [0] * 3  # creates [0, 0, 0]

请注意,如果您拥有动态数量的值(无论这些值是列表还是其他),您可能不希望使用诸如a1a2等的静态变量名称。可能想要一个列表列表:

arrays = []  # empty list
for var in a:
    arrays.append([0] * var)  # adds a list of length var to arrays

如果您从a = [3, 3, 4, 1]开始,那么arrays将会是:

[[0, 0, 0], [0, 0, 0], [0, 0, 0, 0], [0]]

答案 1 :(得分:1)

您可以像这样动态创建数组:

array = [i * [None] for i in a]

a1将是数组中的第一个元素,a2是第二个,依此类推。

a1 = array[0]
a2 = array[1]

答案 2 :(得分:-1)

如果您要根据list的给定输入创建动态数量的变量,则可以执行以下操作。

a = [3, 3, 4, 1]
'''
here the idea is to create a dictionary of dynamic number of variables(list)
according to the incoming size. Keys will be 0..len(list) and values shall be 
as you need
'''
dynamic_array= {}
for i, k in enumerate(a):
    dynamic_array[i] = []

#to assign values (be aware of the Keys)
dynamic_array[0].append(10)
dynamic_array[1].append(10)
dynamic_array[2].append(20)

#to retrieve values
for k in dynamic_array.keys():
    print(dynamic_array[k])