两个列表在python中交互
这是一个Maya Python问题 如何创建一个for循环来实现这一点 我创建了两个列表,一个用于缓冲区,一个用于MM。 使用此命令,cmds.connectAttr(MM+'.message',buffer+'.renderPass',f=True) 您可以将MM连接到缓冲区 以下是我目前拥有的:两个列表在python中交互,python,maya,Python,Maya,这是一个Maya Python问题 如何创建一个for循环来实现这一点 我创建了两个列表,一个用于缓冲区,一个用于MM。 使用此命令,cmds.connectAttr(MM+'.message',buffer+'.renderPass',f=True) 您可以将MM连接到缓冲区 以下是我目前拥有的: import maya.cmds as cmds import maya.mel as mel import random as rand import math bufferls=[] M
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
您可以使用enumerate遍历
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', [])