2013-04-10 2 views
0

Я пытаюсь пропустить 2 списка и присоединиться к ним. Но у меня возникла проблема с структурированием кода цикла.Перечисление списков списков

Это программа Softimage (анимационная 3D-программа), но я надеюсь, что это имеет смысл.

Это то, что у меня есть:

import os 
import glob 
app = Application 
storeSelect=[] 
mypath = app.ActiveProject.ActiveScene.filename.value 
folder=[] 
storeAll=[] 
listObj=[] 
path=[] 
storeSelecte=[] 
folderAll=[] 
#Seleccion 
app.SelectObj("*.geometry_cache_grp*") 
mySelection = app.Selection 


# GETS PATHS FOr each Character Folder 

userPath=Application.XSIInputBox ("Direccion de Cache", "Cache")+ "/" 
os.chdir(userPath) 


#/loops 

for lis in mySelection: 
    storeSelect.append(lis) 
    members = app.SelectMembers(lis) 
    app.SelectObj("*.geometry_cache_grp*") 
    mySelection = app.Selection 

    for files in sorted(glob.glob("*.scn_c*")): 
     folder=files 
     for lise in members: 
      print lise,folder 

Но я получаю результат в два раза, как это:

# DI_CACHE.lengua Anim_2p.scn_c_DI_rig 
# DI_CACHE.vidrios Anim_2p.scn_c_DI_rig 
# DI_CACHE.dientes_abajo Anim_2p.scn_c_DI_rig 
# DI_CACHE.lengua Anim_2p.scn_c_TOTO_GALLO_rig 
# DI_CACHE.vidrios Anim_2p.scn_c_TOTO_GALLO_rig 
# DI_CACHE.dientes_abajo Anim_2p.scn_c_TOTO_GALLO_rig 
# TOTO_GALLO_cache.lengua Anim_2p.scn_c_DI_rig 
# TOTO_GALLO_cache.dientes_01 Anim_2p.scn_c_DI_rig 
# TOTO_GALLO_cache.plumas_guantes Anim_2p.scn_c_DI_rig 
# TOTO_GALLO_cache.lengua Anim_2p.scn_c_TOTO_GALLO_rig 
# TOTO_GALLO_cache.dientes_01 Anim_2p.scn_c_TOTO_GALLO_rig 
# TOTO_GALLO_cache.plumas_guantes Anim_2p.scn_c_TOTO_GALLO_rig 

Кто-нибудь знает, как исправить мой цикл, поэтому он идет только через него только один раз)? Результат должен выглядеть следующим образом:

# DI_CACHE.lengua Anim_2p.scn_c_DI_rig 
# DI_CACHE.vidrios Anim_2p.scn_c_DI_rig 
# DI_CACHE.dientes_abajo Anim_2p.scn_c_DI_rig 
# TOTO_GALLO_cache.lengua Anim_2p.scn_c_TOTO_GALLO_rig 
# TOTO_GALLO_cache.dientes_01 Anim_2p.scn_c_TOTO_GALLO_rig 
# TOTO_GALLO_cache.plumas_guantes Anim_2p.scn_c_TOTO_GALLO_rig 
+0

Вы вообще не получаете материал TOTO? – Serdalis

+2

Вам лучше показать эти два оригинальных списка. – Sheng

+0

Похоже, вы повторно используете одно и то же имя переменной для обоих циклов, это намеренно? Можете ли вы попробовать исправить это, чтобы увидеть, отличается ли результат. –

ответ

0

Я не уверен, если это поможет вам, но вы можете сделать что-то вроде:

members=[["DI_CACHE.lengua","DI_CACHE.vidrios","DI_CACHE.dientes_abajo"],["TOTO_GALLO_cache.lengua","TOTO_GALLO_cache.dientes_01","TOTO_GALLO_cache.plumas_guantes"]]' 

и

folders=[["Anim_2p.scn_c_DI_rig"],["Anim_2p.scn_c_TOTO_GALLO_rig"]] 

затем

for i in xrange(len(a)): 
    for n,m in itertools.product(a[i],b[i]): 
     print n,m 

результат:

DI_CACHE.lengua Anim_2p.scn_c_DI_rig 
DI_CACHE.vidrios Anim_2p.scn_c_DI_rig 
DI_CACHE.dientes_abajo Anim_2p.scn_c_DI_rig 
TOTO_GALLO_cache.lengua Anim_2p.scn_c_TOTO_GALLO_rig 
TOTO_GALLO_cache.dientes_01 Anim_2p.scn_c_TOTO_GALLO_rig 
TOTO_GALLO_cache.plumas_guantes Anim_2p.scn_c_TOTO_GALLO_rig 
+0

@ user2250175: Почему этот ответ выбран, но он размещен как вопрос [здесь] (http://stackoverflow.com/questions/15928701/looping -two-lists-of-lists)? – Schorsch

+0

WTF! Совершенно странно! – Moj

Смежные вопросы