【问题标题】:python execute list and list of functions [duplicate]python执行列表和函数列表[重复]
【发布时间】:2015-04-22 11:49:22
【问题描述】:

我将 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)

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

下一个数组项也是如此。 [1] with [1] and [2] with [2] and [3] with [3].

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

【问题讨论】:

  • 你可能想做:string1 = [a,b,c,d]
  • 注意到了,Alfasin。

标签: python string function python-2.7 maya


【解决方案1】:

您可以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)

【讨论】:

  • 工作得非常完美!我有一些打嗝,因为我搞砸了一些东西,但它有效!非常感谢网络!
猜你喜欢
  • 2015-02-01
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2020-07-29
  • 2021-08-02
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多