2010-04-13 120 views
0

我想知道这是否可能...将列表转换为变量序列

我有一系列变量必须相应地分配给do.something(a,b)a和b变量。

事情是这样的:

# # Have a list of sequenced variables. 
list = 2:90 , 1:140 , 3:-40 , 4:60 

# # "Template" on where to assign the variables from the list.  
do.something (a,b) 
# # Assign the variables from the list in a sequence with possibility of "in between" functions like print and time.sleep() added. 

do.something (2,90) 
time.sleep(1) 
print "Did something (%d,%d)" % (# # vars from list?) 
do.something (1,140) 
time.sleep(1) 
print "Did something (%d,%d)" % (# # vars from list?) 
do.something (3,-40) 
time.sleep(1) 
print "Did something (%d,%d)" % (# # vars from list?) 
do.something (4,60) 
time.sleep(1) 
print "Did something (%d,%d)" % (# # vars from list?) 

任何想法?

+0

为什么不使用'list =((2,90),(1,140),...)'? – kennytm 2010-04-13 22:22:21

+0

@Matti Virkkunen。 :) 谢谢你的提示。甚至不知道你必须这样做。 – wtz 2010-04-13 22:49:50

回答

4
arglist = [(2, 90), (1, 140), (3, -40), (4, 60)] 
for args in arglist: 
    do.something(*args) 
    time.sleep(1) 
    print "Did something (%d,%d)" % args 

*表示“使用此元组中的值作为参数”。提示:你可以通过使用**和字典对关键字参数进行相同的操作。

+2

使用'list'作为变量名在Python中不是犹太教。 – 2010-04-13 22:28:15

+1

Woops,好点...让我们不要重写内置类型。固定。 – 2010-04-13 22:29:31

+0

公平地说,Python不在乎。至少,直到它遇到了一个程序员想要使用'list'类型的行,但忘记了他用这个名字来做其他事情。 – 2010-04-13 22:41:11