我的场景中有 3 个定位器,例如。
定位器01 - 本地比例 Y 值为 1
定位器02 - 本地比例 Y 值为 2
定位器03 - 本地比例 Y 值为 3
每个在其 localScaleY 中都有不同的值。我曾想比较这 3 个定位器的 localScaleY 值并抓取最高的一个(在本例中为 Locator03)
yMax = []
for yValue in pm.ls('locator*'):
yMax.append(getAttr (yValue +'.localScaleY'))
yMaxValue = max(yMax)
print yMaxValue
因此,基于上述编码,当我将比较更多项目时,这是一种可行的编写方式吗?或者也许有更好的方法?
构建一个比例/对象元组的生成器,并取其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') #
虽然 mhlester 的答案有效,但我看不出生成器她的原因。我只想max()
名单。
maxLoc = max(l.localScaleY for l in locs)
print '{} has the highest value in localScaleY: {}'.format(maxLoc.split('.')[0], maxLoc.get())