首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python readline()每次创建一个新列表

python readline()每次创建一个新列表
EN

Stack Overflow用户
提问于 2014-07-11 05:43:03
回答 3查看 142关注 0票数 0

因此,基本上,我试图获取一个文件并分解它,这取决于文本在文件中的位置。

所以我有一个方法看起来像这样

代码语言:javascript
复制
def sort_file(f):
    #print(f.read())
    mnemonics = []
    mnemonic_line = []
    next(f)#skip the default group on the first line
    for line in f.readlines():
        mnemonic_line.append(line[0:3])
        mnemonic_line.append(line[5:8])
        #print(line[5:8])
        #print(line[9:69])
        #print(line[69:139])
        #print(line[139:190])
        mnemonics.append(mnemonic_line)
        #del mnemonic_line[:]
        pdb.set_trace()
        #print(line.split())
        #print(len(line))

我试图创建一个列表列表,其中每一行都是一个列表,而整个文件是一个行列表。

所以我想我知道问题是什么,但我不知道如何解决。据我所知,每一次我经历,我添加到列表中,我使用我自己的列表,它每一次都在增长。

代码语言:javascript
复制
(Pdb) print mnemonics
[['CTM', 'ABS']]
(Pdb) c
(Pdb) print mnemonics
[['CTM', 'ABS', 'CTM', 'ACA'], ['CTM', 'ABS', 'CTM', 'ACA']]
(Pdb) c
(Pdb) print mnemonics
[['CTM', 'ABS', 'CTM', 'ACA', 'CTM', 'ACC'], ['CTM', 'ABS', 'CTM', 'ACA', 'CTM', 'ACC'], ['CTM', 'ABS', 'CTM', 'ACA', 'CTM', 'ACC']]

如您所见,我的mnemonic_line列表每次循环并在位置1、2、3、4重新添加时都会增长.在其当前循环处设置值。

我认为我需要做的是每次创建一个新的列表,并将它添加到列表中,这样我的输出就像这样

代码语言:javascript
复制
[['CTM', 'ABS'],['CTM', 'ACA'],['CTM', 'ACC']]

对于如何做到这一点,我们将不胜感激:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-11 05:52:46

在循环中将mnemonic_line附加到mnemonics之后,您不会清除(或重新初始化)它。这就是我的意思:

代码语言:javascript
复制
for line in f.readlines():
    mnemonic_line.append(line[0:3])
    mnemonic_line.append(line[5:8])
    mnemonics.append(mnemonic_line)
    mnemonic_line = []
票数 2
EN

Stack Overflow用户

发布于 2014-07-11 05:53:43

只需将mnemonic_line = []转换为for循环:

代码语言:javascript
复制
def sort_file(f):
    #print(f.read())
    mnemonics = []
    next(f)#skip the default group on the first line
    for line in f.readlines():
        mnemonic_line = [] # <------
        mnemonic_line.append(line[0:3])
        mnemonic_line.append(line[5:8])
        mnemonics.append(mnemonic_line)
        pdb.set_trace()
票数 1
EN

Stack Overflow用户

发布于 2014-07-11 05:49:45

看看你的代码。每次迭代时都将mnemonic_line附加到mnemonics中,但并不是清除mnemonic_line

看看这个,然后将它应用到您的代码中。

代码语言:javascript
复制
>>> lol = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> a = [] # your mnemonics
>>> b = [] # your mnemonic_line
>>> for line in lol:
        b.append(line[:2])
        a.append(b)
>>> a
[[[1, 2], [4, 5], [7, 8]], [[1, 2], [4, 5], [7, 8]], [[1, 2], [4, 5], [7, 8]]]
>>> b
[[1, 2], [4, 5], [7, 8]]
>>> a = []
>>> b = []
>>> for line in lol:
        b = []
        b.append(line[:2])
        a.append(b)
>>> a
[[[1, 2]], [[4, 5]], [[7, 8]]]
>>> b
[[7, 8]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24690768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档