2013-10-24 5 views
2
루프에서

파이썬 목록, 어떻게해야합니까 모두 하나 개의 목록에파이썬 목록

import os 
dir="/tmp/logvol/logs/fil/sap/archive/" 
n=os.listdir(dir) 
#print n 

for x in n: 
#print x 
l = []; 
l.append(os.path.join(dir,x)) 
print l 

출력 :

대신 여러 목록의
['/tmp/logvol/logs/fil/sap/archive/m.log'] 
['/tmp/logvol/logs/fil/sap/archive/k.log'] 
['/tmp/logvol/logs/fil/sap/archive/j.log'] 
['/tmp/logvol/logs/fil/sap/archive/p.log'] 

, 나는 모든 필요 하나의 목록.

['/tmp/logvol/logs/fil/sap/archive/m.log', '/tmp/logvol/logs/fil/sap/archive/k.log', '/tmp/logvol/logs/fil/sap/archive/j.log', '/tmp/logvol/logs/fil/sap/archive/p.log'] 
+1

당신은 close하고 있습니다 : for 루프 밖에서'l'을 생성하십시오 (쓸모없는 끝 콜론을 제거하십시오) – Boud

답변

9

또 다른 방법은 목록 이해입니다.

l = [os.path.join(dir,x) for x in n] 
+1

+1 이것은 pythonic입니다 – slezica

5

당신은 루프 외부 목록 l의 당신의 선언을 이동해야합니다

l = [] 
for x in n: 
#print x 
l.append(os.path.join(dir,x)) 

는 또한, 당신은 파이썬에서 세미콜론이 필요하지 않습니다.

0

당신은 for 루프

for x in n: 
    #print x 
    l = []; # here You recreate list every iteration 
    l.append(os.path.join(dir,x)) 
    print l 

의 모든 반복이 for 루프

l = []; # here You recreate list every iteration 
for x in n: 
    l.append(os.path.join(dir,x)) 
print l 

전에이 인스턴스화 목록을 방지하고, 변수에 대해 다른 이름을 선택하는 l 목록을 다시하지 l 때문에 http://www.python.org/dev/peps/pep-0008/#names-to-avoid