import maya.cmds as cm
import random as rand
def vertQuery(List = [] , *arg):
myList = cm.ls(sl = True)
for i in myList:
List.append(cm.ls('%s.cv[:]'%i, flatten = True))
return List
a = vertQuery()
def randMaker(randList = [] , x = 0 , y = 0 ,*arg):
for i in range(len(a)):
for j in range(len[x][y]):
randList.append(rand.uniform(-1,1))
y+=1
if y == len[x][-1]:
x+=1
b = randMaker()
第一个函数获取曲线的所有cvs并将它们放在列表中
第二个函数读取基本列表中列表的len并生成随机数
但我收到此错误
# Error: line 1: 'builtin_function_or_method' object has no attribute '__getitem__'
# Traceback (most recent call last):
# File "<maya console>", line 9, in <module>
# File "<maya console>", line 3, in randMaker
# TypeError: 'builtin_function_or_method' object has no attribute '__getitem__' #
我没有上课。
有人告诉我我的剧本是否正确?
最好的问候
答案 0 :(得分:1)
您有多个len[x]
个实例。我不知道你期望它做什么,但是它试图将内置函数len
视为序列或映射,并从中获取x
索引的项。那不是你想要的。
答案 1 :(得分:0)
一些事情:
* builtin_function_or_method'对象没有属性' getitem '*因为你正在调用len [x] [y],其中x和y是整数。它正在地址[y]中查找[x]内的项目,但x是一个整数。
你的意思是你想要每个列表中有元素的项目数量是多少?在那种情况下
randoms = [rand.uniform(-1, 1) for item in your_list_here]
或者您想要随机化列表中项目的顺序吗?
from random import shuffle
random.shuffle(your_list_here)
答案 2 :(得分:0)
def randList (lists, items):
result = []
for r in range(0, lists):
result.append([ rand.uniform(-1, 1) for item in range (0, items)]
return result
其中列表和项目都是数字
如果您需要为每个输入列表支持相同长度的随机列表:
import random as rand
def randList(incoming_list):
return [rand.uniform(-1,1) for item in incoming_list]
lol = [[1,2,3],[4,5,6]]
map (randList, lol)
# Result: [[0.69216923130579877, -0.14662937842796997, -0.34716966661973547], [-0.093984856291694729, 0.22759662550142301, -0.039570637016330457]] #