0

抱歉我的头衔不是最好的。这是我要完成的工作:我有一个清单:

list1 = [a0_something, a2_something, a1_something, a4_something, a3_something]

我有另一个列表,其中条目是元组,包括名称,例如:

list2 = [(x1,y1,z1,'bob'),(x2,y2,z2,'alex')...]

第二个列表中的第 0 个名称对应于 a0_something,第二个列表的第一个条目中的名称对应于 a1_something。基本上第二个列表是按写入顺序排列的,但第一个列表不是。

我正在使用的程序有一个 setName 函数我想这样做

a0_something.setName(list2[0][4])

等等循环。

所以我真的只能说

for i in range(len(list1)):
    a(i)_something.setName(list2[i][4])

无论如何我可以在 a#_something 中引用该数字,以便我可以使用循环进行迭代?

4

2 回答 2

3

不。

变量名在运行时没有意义。(除非你在做内省,我保证你是不应该做的事情。)

使用适当的列表,以便:

lst = [a0_val, a1_val, a2_val, a3_val, a4_val]

然后通过lst[0].

或者,如果这些名称有意义,请使用 dict 其中:

dct = {
    'a0' : a0_val,
    'a1' : a1_val,
    # ...
}

并将其与dct['a0'].

于 2012-06-12T22:19:57.523 回答
0

enumerate 函数可让您获取当前项目的值和索引。因此,对于您的示例,您可以执行以下操作:

for i, asomething in enumerate(list1):
    asomething.setName(list2[i][3])

由于您的 list2 长度为 4,因此最终元素是索引 3(您也可以使用 -1)

于 2012-06-12T22:25:22.827 回答