我在主函数(即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个元素)。
这可能吗?
答案 0 :(得分:1)
您可以使用for ... in
遍历数组(列表)的所有元素:
for var in a:
# do something with var
列表不需要预先分配(在向其中添加内容时,它们会动态调整大小),但是如果您确实想创建一定长度的列表,则简单的方法是乘法运算符:>
a1 = [0] * 3 # creates [0, 0, 0]
请注意,如果您拥有动态数量的值(无论这些值是列表还是其他),您可能不希望使用诸如a1
,a2
等的静态变量名称。可能想要一个列表列表:
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])