0
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__' #  

我没有使用课程。

有人告诉我我的脚本是否正确?

此致

4

3 回答 3

1

您有多个len[x]. 我不知道您期望它做什么,但它试图将内置函数len视为序列或映射并从中获取索引的项目x。那不是你想要的。

于 2013-07-30T18:28:54.490 回答
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]] # 
于 2013-07-31T15:39:20.320 回答
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)
于 2013-07-31T03:08:43.637 回答