为什么我为指定的类型获取NoneType

时间:2014-04-28 06:04:40

标签: python list python-3.x

我有一个简单的脚本问题。我实际上正在处理类似矩阵的值(就像这一个:[[1, 2, 3], [4, 5, 6]])。

在文件Input上,从文件中读取我实际得到NoneType,尽管我在函数顶部定义了名称。这是我正在做的脚本:

with open("matrice.txt","r") as fichierMatrice:
    a_matrice = [] # name defined
    print(a_matrice)
    for line in fichierMatrice:
        print(line)
        a_liste = line.split()
        a_matrice = a_matrice.append(a_liste) # error here
print(a_matrice)

matrice.txt具有以下内容:

1 2 3 
4 5 6

在第11行,我收到错误:

AttributeError: 'NoneType' object has no attribute 'append'

所以我做错了什么?

2 个答案:

答案 0 :(得分:3)

list.append返回None。执行以下append时,您要将None分配给a_matrix。这将导致循环的下一次迭代出现异常。

a_matrice = a_matrice.append(a_liste)

修复非常简单。只需删除作业。

a_matrice.append(a_liste)

答案 1 :(得分:1)

.append()是一个内置函数,不返回任何内容,因此None

>>> lst = []
>>> new = lst.append(8)
>>> lst
[8]
>>> new
>>> print new
None
>>> 

相反,只需删除您要分配的内容:

with open("matrice.txt","r") as fichierMatrice:
    a_matrice = [] # name defined
    print(a_matrice)
    for line in fichierMatrice:
        print(line)
        a_liste = line.split()
        a_matrice.append(a_liste) # error here
print(a_matrice)

同样适用于.sort().insert()

.sort()

>>> lst = [9, 8]
>>> lst = lst.sort()
>>> print lst
None

.insert()

>>> lst = [9, 8]
>>> lst = lst.insert(0, 7)
>>> print lst
None
>>>