python 执行列表和函数列表
python execute list and list of functions
我在 Autodesk Maya 中使用 Python 2.7。这是我的问题的示例:
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]
with [1]
and [2]
with [2]
and [3]
与 [3]
.
本质上,我正在尝试减少代码并简化代码的执行方式,而不是为 20 多个单独的实例乏味地编写上述代码。
您可以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)
我在 Autodesk Maya 中使用 Python 2.7。这是我的问题的示例:
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]
with [1]
and [2]
with [2]
and [3]
与 [3]
.
本质上,我正在尝试减少代码并简化代码的执行方式,而不是为 20 多个单独的实例乏味地编写上述代码。
您可以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)