0

我需要循环一个包含 2 个列表的动作,但是当我尝试循环它时,它会为里面的每个列表循环超过 1 次。很难解释。这是我的代码:

import os

#pregunta el Path
userPath=("/mnt/die/go")

#Hace la lista de objetos
lista = ("r.alas", "r.guantes","r.cabeza","r.res")      

# Corta la Lista para tener solo objeto
listaCorta = []

for each in lista:
    listaCorta.append  (str(each).split(".")[1])

for lis in lista:   
    for r in listaCorta:
        direccion='%s/%s_1.pc2' % (userPath, r)
        print lis,direccion

这就是我得到的:

# r.alas /mnt/die/go/alas_1.pc2
# r.alas /mnt/die/go/guantes_1.pc2
# r.alas /mnt/die/go/cabeza_1.pc2
# r.alas /mnt/die/go/res_1.pc2
# r.guantes /mnt/die/go/alas_1.pc2
# r.guantes /mnt/die/go/guantes_1.pc2
# r.guantes /mnt/die/go/cabeza_1.pc2
# r.guantes /mnt/die/go/res_1.pc2
# r.cabeza /mnt/die/go/alas_1.pc2
# r.cabeza /mnt/die/go/guantes_1.pc2
# r.cabeza /mnt/die/go/cabeza_1.pc2
# r.cabeza /mnt/die/go/res_1.pc2
# r.res /mnt/die/go/alas_1.pc2
# r.res /mnt/die/go/guantes_1.pc2
# r.res /mnt/die/go/cabeza_1.pc2
# r.res /mnt/die/go/res_1.pc2
# ('r.alas', '/mnt/die/go/res_1.pc2')
# ('r.guantes', '/mnt/die/go/res_1.pc2')
# ('r.cabeza', '/mnt/die/go/res_1.pc2')
# ('r.res', '/mnt/die/go/res_1.pc2')

我只需要一个,像这样:

r.ala , /mnt/die/go/alas_1.pc2
r.guantes , /mnt/die/go/guantes_1.pc2
4

3 回答 3

1

我想你想要这样的东西:

for each in lista:   
    direccion='%s/%s_1.pc2' % (userPath, str(each).split(".")[1])
    print lis,direccion

而不是所有的循环。

于 2013-04-05T18:44:24.927 回答
0

拆分原始字符串,创建“方向”变量并在第一个循环中打印它们。for 循环内的命令块(在另一个循环内)执行 mxn 次(其中 m 是外循环的大小,n 是内循环的大小)。

于 2013-04-05T18:43:42.100 回答
0

你的 for 循环

for lis in lista:   
    for r in listaCorta:
        direccion='%s/%s_1.pc2' % (userPath, r)
        print lis,direccion

是导致循环的原因。所以你需要这样做:

for lis in lista:
    direccion='%s/%s_1.pc2' % (userPath, str(lis).split(".")[1])

这样您就可以完全摆脱 1 for 循环。

import os
userPath=("/mnt/die/go")

lista = ("r.alas", "r.guantes","r.cabeza","r.res")

for lis in lista:   
    direccion='%s/%s_1.pc2' % (userPath, str(lis).split(".")[1])
    print lis, direccion
于 2013-04-05T18:43:57.423 回答