两个列表在python中交互

时间:2017-08-04 04:53:46

标签: python maya

这是一个Maya Python问题。

enter image description here

如何创建一个用于制作此

的for循环

enter image description here

我创建了两个列表,一个用于Buffer,另一个用于MM。 使用此命令,cmds.connectAttr(MM +'。messeage',buffer +'。renderPass',f = True)

您可以将MM连接到缓冲区

enter image description here

以下是我目前的情况:

import maya.cmds as cmds
import maya.mel as mel
import random as rand
import math

bufferls=[]
MMls=[]



for i in range(5):

    writeToColor=mel.eval('mrCreateCustomNode -asUtility "" writeToColorBuffer;')
    cmds.rename(writeToColor, 'buffer'+str(i))    
    bufferls.append('buffer'+str(i))

for i in range(2):
    MutiMatte = cmds.createNode( 'renderPass', name=('MM'+str(i)))         
    cmds.setRenderPassType( 'MM'+str(i),type='CSTCOL')
    MMls.append(MutiMatte)



def n_split(bufferls, n=3):
    num_extra = len(bufferls) % n
    zipped = zip(*[iter(bufferls)] * n)
    return zipped if not num_extra else zipped + [bufferls[-num_extra:], ]


for buffer in n_split(bufferls, 3):
    newlists =list(buffer)
    print newlists

1 个答案:

答案 0 :(得分:0)

您可以使用枚举迭代listA,然后使用切片从listB获取位:

def pair_in_groups(listA, listB, n):
    for i, item in enumerate(listA):
        yield (item, listB[n*i: n*(i+1)])

listA = ['mm0', 'mm1', 'mm2']
listB = ['aa1', 'aa2', 'aa3','aa4','aa5']

for pair in pair_in_groups(listA, listB, 3):
    print(pair)

打印

('mm0', ['aa1', 'aa2', 'aa3'])
('mm1', ['aa4', 'aa5'])
('mm2', [])