从基本列表中的两个列表中生成随机数

时间:2013-07-30 18:25:59

标签: python list random maya

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

我没有上课。

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

最好的问候

3 个答案:

答案 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]] #