如何遍历一系列整数,将一个字符串(例如“array”)与循环的迭代连接起来,并用结果字符串初始化一个列表?下面的单行显示了我想要做的事情,我在哪里得到“无法分配给函数调用”错误。
for i in range(int(nmat)): eval('array'+str(i)) = []
同时,在代码中进一步向下接受以下代码(前提是我注释掉了导致它炸弹的前面的代码)
eval('array'+str(ct1)).append(array[1:9])
然而它告诉我名称'array0'是未定义的(因为我不知道如何以这种方式初始化一系列列表)。非常感谢帮助,谢谢。
答案 0 :(得分:5)
你不应该这样做。
不要使用多个变量数组 i ,而只使用一个类型为list的array
。例如,如果列表的每个元素都应该是一个空列表:
array = [[] for i in range(int(nmat))]
然后,您可以使用array[0]
访问第一个元素,使用array[1]
访问第二个元素,使用{{访问array
(本例中为int(nmat)
)中的元素数量1}}。
答案 1 :(得分:3)
mylist = []
for i in range(10):
a = ['array%i' %i]
mylist.append(a)
print mylist
[['array0'], ['array1'], ['array2'], ['array3'], ['array4'], ['array5'], ['array6'], ['array7'], ['array8'], ['array9']]
在一行中:
mylist = [['array%i' %i] for i in range(10)]
你必须非常小心列表乘法:
>> array = [[]] * int('3')
>> array
[[], [], []]
>> array[0] = 'imastring'
>> array
['imastring', [], []]
并且更危险:
>> array = [[]] * int('3')
>> array[0].append('repeated')
>> array
[['repeated'], ['repeated'], ['repeated']]