涉及“AttributeError:”NoneType“对象没有属性”“append”“的奇怪错误”

2024-10-01 13:42:27 发布

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

因此,我试图通过将文本文件转换为一个列表并在空格处拆分列表中的每一项来解析它。在

我已经创建了一个测试变量来单独运行这部分代码。 我在spyder编辑器中的代码:

test = ['NC_009142.1_03_012_002_001 560', 'NC_017586.1_13_009_003_001 555', 'NC_016111.1_13_010_003_001 555']
ListOfLinesParsed = test

PN_List = []
counter_iterative = 0
while counter_iterative < len(ListOfLinesParsed):
    PN_List = PN_List.append(ListOfLinesParsed[counter_iterative].split()[0])
    counter_iterative += 1

print PN_List

返回一个错误:

runfile(r'/home/jake/.spyder2/.temp.py', wdir=r'/home/jake/.spyder2')

^{pr2}$

但如果我直接在终端输入命令,我不会出错:

testL = []

testL.append(test[0].split()[0])

testL

['NC_009142.1_03_012_002_001']

testL.append(test[1].split()[0])

testL

['NC_009142.1_03_012_002_001', 'NC_017586.1_13_009_003_001']

testL.append(test[2].split()[0])

testL

['NC_009142.1_03_012_002_001', 'NC_017586.1_13_009_003_001', 'NC_016111.1_13_010_003_001']

这两样东西不应该完全一样吗?我不明白为什么我的脚本中的命令和终端命令有什么不同。在


Tags: 代码test命令home列表counterlistsplit
1条回答
网友
1楼 · 发布于 2024-10-01 13:42:27

线

PN_List = PN_List.append(ListOfLinesParsed[counter_iterative].split()[0])

是问题所在。在

list.append是一个就地操作,它返回None,但会改变原始列表本身。如果将PN_List分配给结果,它将变成None。如果你不这样做,那么你的程序将顺利运行。这就是为什么当你尝试在没有赋值的情况下附加内容时,你会得到预期的答案。在

相关问题 更多 >