2013-10-24 69 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