python执行列表和函数列表

时间:2015-02-20 17:44:25

标签: python string function python-2.7 maya

我正在使用Python 2.7和Autodesk Maya。这是我的问题的一个例子:

import maya.cmds as m

def a(passedString):
    print('this'+passedString)
def b(passedString):
    print('that'+passedString)
def c(passedString):
    print('notThis'+passedString)
def d(passedString):
    print('ofCourse'+passedString)
string1 = [a(),b(),c(),d()]
string2 = [poly1,poly2,poly3,poly4]
for each in string2 and every in string1:
    m.select(each)
    every(each)

这可能看起来很简单,但我需要的是string2[0](一个函数)执行string1[0] 并且仅 string1[0]

下一个数组项也一样。 [1] [1][2] [2][3] [3]

基本上,我试图减少代码并简化我的代码执行方式,而不是单独编写20多个单独实例的上述代码。

1 个答案:

答案 0 :(得分:3)

您可以zip列表以元素方式迭代它们

for func, param in zip(string1, string2):
    func(param)

例如

string1 = [len, type, max]
string2 = ['hello', 5, [1,3,7]]
for func, param in zip(string1, string2):
    func(param)

输出

5
<class 'int'>
7

另请注意,在功能列表中,您不应将()添加到函数末尾,因为如果您这样做,调用函数。只需保留函数名称(例如,参见上面的string1列表)。

对于你的代码,循环看起来像

for each, every in zip(string2, string1):
    m.select(each)
    every(each)