我的场景中有3个定位器,例如
Locator01 - localScaleY值为1
Locator02 - localScaleY值为2
Locator03 - localScaleY值为3
每个都在localScaleY中有不同的值。我想比较这3个Locators的localScaleY值并抓住最高的值(在这种情况下它将是Locator03)
yMax = []
for yValue in pm.ls('locator*'):
yMax.append(getAttr (yValue +'.localScaleY'))
yMaxValue = max(yMax)
print yMaxValue
基于上面的编码,这是一种可行的写作方式,因为我将比较更多的项目?或许还有更好的方法?
答案 0 :(得分:3)
构建一个scale / object元组的生成器,并获取它的max
。通过将比例放在第一位,max
键正确关闭。
locators = ((getAttr(locator+'.localScaleY'), locator) for locator in pm.ls('locator*'))
yMaxValue, locator = max(locators)
一些输出供参考:
>>> list(locators)
# Result: [(1.0, nt.Transform(u'locator01')),
(2.0, nt.Transform(u'locator02')),
(3.0, nt.Transform(u'locator03')),
(1.0, nt.Locator(u'locator0Shape1')),
(2.0, nt.Locator(u'locator0Shape2')),
(3.0, nt.Locator(u'locator0Shape3'))] #
>>> yMaxValue
# Result: 3.0 #
>>> locator
# Result: nt.Locator(u'locator0Shape3') #
答案 1 :(得分:0)
虽然mhlester的答案有效,但我没有看到她的原因。我只想max()
列表。
maxLoc = max(l.localScaleY for l in locs)
print '{} has the highest value in localScaleY: {}'.format(maxLoc.split('.')[0], maxLoc.get())