道歉我的头衔不是最好的。这是我想要完成的: 我有一个清单:
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中引用该数字,以便我可以循环迭代?
答案 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)