Python变量字符串串联

Python变量字符串串联,python,python-2.7,maya,Python,Python 2.7,Maya,我试图在maya python中迭代一个循环(选择顶点),但我正在修改循环中正确连接变量(sel)的语法 sel = mc.ls(sl=True) for num in range(0,noOfVerts, 2): mc.select("sel.vtx[%d]" % num, add = True) 是否将变量用作字符串而不是对象本身您需要删除此引号,并直接将变量用作第一个参数,而不是表示变量名称的字符串: sel = mc.ls(sl=True) for num in range(0

我试图在maya python中迭代一个循环(选择顶点),但我正在修改循环中正确连接变量(sel)的语法

sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
    mc.select("sel.vtx[%d]" % num, add = True)

是否将变量用作字符串而不是对象本身

您需要删除此引号,并直接将变量用作第一个参数,而不是表示变量名称的字符串:

sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
    mc.select(sel.vtx[num], add=True)

因为你告诉它把它当作一个字符串。我猜你想要的是:

mc.select(sel.vtx[num], add = True)

您需要从变量中组合字符串,而不仅仅是使用文本
sel

sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
    mc.select("%s.vtx[%d]" % (sel[0], num), add = True)
这假定您只选择了一个对象。否则,您只需在
sel
上循环即可

您可以执行循环,但最终会在撤销堆栈中放入许多内容。如果有很多顶点,速度会慢得可笑尽量避免这种情况。Maya确实提供了通配符选择器,因此您可以简单地执行以下操作:

for item in mc.ls(sl=True):
   mc.select("%s.vtx[*]" % item, add=True)
而不是一次只选一个,速度太慢了。另一种方法是生成大量名称并一次性选择它们。因此,当一个选择就可以了时,不要调用多个选择。这降低了内存消耗并加快了速度(是的,如果有1000个或更多顶点,这非常重要)

另一方面,您还可以使用以下方法避开整个代码:

mc.select(mc.polyListComponentConversion(toVertex=True))

Ps:maya也知道组件选择的切片操作,就像python一样。因此,可以选择obj.vtx[0:100]

mc.ls
返回一个
列表,该列表没有
vtx
方法,因为您可能已经注意到,一般的python技能可能无法很好地转化为如何有效地使用Maya。