Skip to main content
 首页 » 编程设计

python之无法附加到列表

2025年05月04日36youxin

背景: 我有一个文本文件,其中包含如下输入:

#1 GLN 15.A OE1 
#1 ILE 16.A C 
#1 ILE 16.A CA 
#1 ILE 16.A CB 
#1 ILE 16.A CD1 

我将此文件转换为 python 中的字符串。我得到了我想要的输出(比如数字)。

部分代码在这里:

def extractnum(s): 
   x = s.split('\n') 
   x.pop() #To remove last line which is empty 
   y = [ i.split() for i in x ] 
   z = [ j[2] for j in y ] #z is the list that contains the residue and chain information 
   n = [int(k.split('.')[0]) for k in z] 
   a_chain_residues = '' 
   ca_a_chain_residues = '' 
   list_of_a_chain_residues = [ ] 
   for i in list(set(z)): #list(set(z)) gives a list that removes all the duplicate items in z: it doesn't change z 
      if i[-1] == 'A': 
          a_chain_residues = a_chain_residues + i +',' 
          ca_a_chain_residues = ca_a_chain_residues + i + '.ca,' 
          list_of_a_chain_residues = list_of_a_chain_residues.append(i) 
      print list_of_a_chain_residues 

终端读取错误

extractnum(s) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "<stdin>", line 17, in extractnum 
AttributeError: 'NoneType' object has no attribute 'append' 

为什么“我”不能添加到列表中?有办法解决这个问题吗?

请您参考如下方法:

请注意:

>>>i = [] 
>>>print i.append(2) 
None 

此追加的返回值为None。

所以,当这样做时:

list_of_a_chain_residues = list_of_a_chain_residues.append(i) 

您将 list_of_a_chain_residues 设置为 None,因为 append 不返回值。 改为这样做:

list_of_a_chain_residues.append(i)