2013-10-24 100 views
2

Python列表中的for循環,我怎麼都在一個列表Python列表到一個列表

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

你已經關閉了:在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)) 

而且,你不需要在Python分號。

0

您重新l列表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因爲http://www.python.org/dev/peps/pep-0008/#names-to-avoid