如何在python中使用字符串初始化一系列列表?

时间:2011-06-16 21:06:18

标签: python

如何遍历一系列整数,将一个字符串(例如“array”)与循环的迭代连接起来,并用结果字符串初始化一个列表?下面的单行显示了我想要做的事情,我在哪里得到“无法分配给函数调用”错误。

for i in range(int(nmat)): eval('array'+str(i)) = []

同时,在代码中进一步向下接受以下代码(前提是我注释掉了导致它炸弹的前面的代码)

eval('array'+str(ct1)).append(array[1:9])

然而它告诉我名称'array0'是未定义的(因为我不知道如何以这种方式初始化一系列列表)。非常感谢帮助,谢谢。

2 个答案:

答案 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']]