根据Python中列表中对象名称中的数字进行索引

时间:2012-06-12 22:13:49

标签: python python-2.7

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

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

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

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

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

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

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

等循环。

所以我真的可以说

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

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

2 个答案:

答案 0 :(得分:3)

没有

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

使用适当的列表:

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

然后按lst[0]解决。

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

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

并将其与dct['a0']一起使用。

答案 1 :(得分:0)

枚举函数可让您获取当前项的值和索引。因此,对于您的示例,您可以这样做:

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

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