在python中,从变量中的多个项中创建一个列表

2024-10-03 21:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个简单的程序,可以读取一个包含3行文本的文件。我已经把线分开,从t2变量得到输出。我如何去掉括号,使之成为一个列表?你知道吗

fname = 'dogD.txt'
fh = open(fname)
for line in fh:
    t2 = line.strip()
    t2 = t2.split()
    print t2

['Here', 'is', 'a', 'big', 'brown', 'dog']
['It', 'is', 'the', 'brownest', 'dog', 'you', 'have', 'ever', 'seen']
['Always', 'wanting', 'to', 'run', 'around', 'the', 'yard']

Tags: 文件the文本程序txt列表isline
3条回答

它们都是不同的列表,如果要使它们成为单个列表,应该在for循环之前定义一个列表,然后使用从文件中获得的列表扩展该列表。你知道吗

示例-

fname = 'dogD.txt'
fh = open(fname)
res = []
for line in fh:
    t2 = line.strip().split()
    res.extend(t2)
print res

或者也可以使用列表连接。你知道吗

fname = 'dogD.txt'
fh = open(fname)
res = []
for line in fh:
    t2 = line.strip().split()
    res += t2
print res

使用extend()方法可以轻松完成:

fname = 'dogD.txt'
fh = open(fname)
t2 = []
for line in fh:
    t2.append(line.strip().split())
print t2

可以将所有拆分的线添加到一起:

fname = 'dogD.txt'
t2=[]
with open(fname) as fh:
  for line in fh:
    t2 += line.strip().split()
  print t2

您还可以使用函数并返回在内存使用方面效率更高的生成器:

fname =  'dogD.txt'
def spliter(fname):
    with open(fname) as fh:
      for line in fh:
        for i in line.strip().split():
          yield i

如果要循环结果,可以执行以下操作:

for i in spliter(fname) :
       #do stuff with i

如果您想获得一个列表,可以使用list函数将生成器转换为一个列表:

print list(spliter(fname))

相关问题 更多 >