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']
答案 0 :(得分:9)
另一种方法是使用列表理解。
l = [os.path.join(dir,x) for x in n]
答案 1 :(得分:5)
您需要将列表l
的声明移到循环之外:
l = []
for x in n:
#print x
l.append(os.path.join(dir,x))
此外,您不需要Python中的分号。
答案 2 :(得分: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