如何修复“AttributeError: 'str' object has no attribute 'append'”错误

29
>>> myList[1]
'from form'
>>> myList[1].append(s)

Traceback (most recent call last):
  File "<pyshell#144>", line 1, in <module>
    myList[1].append(s)
AttributeError: 'str' object has no attribute 'append'
>>>

为什么myList[1]被视为'str'对象?mList[1]返回列表中的第一个项目'from form',但我无法将项目1附加到列表myList中。我需要有一个列表的列表;所以'from form'应该是一个列表。我这样做了:
>>> myList
[1, 'from form', [1, 2, 't']]
>>> s = myList[1]
>>> s
'from form'
>>> s = [myList[1]]
>>> s
['from form']
>>> myList[1] = s
>>> myList
[1, ['from form'], [1, 2, 't']]
>>> 

1
mList[1] 返回 mList 的第二个元素。 - SilentGhost
你能看一下这篇文章吗:AttributeError: ‘str’ object has no attribute ‘append’ - Fefar Ravi
5个回答

29

myList[1]myList 的一个元素,它的类型是字符串。

myList[1] 是一个字符串,你无法将内容添加到它里面。 myList 是一个列表,你应该向其中添加元素。

>>> myList = [1, 'from form', [1,2]]
>>> myList[1]
'from form'
>>> myList[2]
[1, 2]
>>> myList[2].append('t')
>>> myList
[1, 'from form', [1, 2, 't']]
>>> myList[1].append('t')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'append'
>>> 

9
如果您想将一个值添加到myList中,请使用myList.append(s)
字符串是不可变的--您无法向其中添加内容。

3
为什么myList [1]被视为“str”对象?
因为它是一个字符串。如果不是字符串,那么'from form'是什么?(实际上,字符串也是序列,也可以被索引、切片、迭代等--但这是str类的一部分,不会使它成为列表或其他东西)。
mList [1]返回列表'from form'中的第一个项目。
如果你的意思是myList是'from form',不是!!!第二个(索引从0开始)元素是'from form'。这是很大的区别。这是房子和人之间的区别。
此外,myList不必是你的简短代码示例中的列表--它可以是任何接受1作为索引的东西--带有1作为索引的字典、列表、元组、大多数其他序列等等。但这无关紧要。
但我不能向列表myList中的项目1添加内容。
当然不能,因为它是一个字符串,你不能向字符串中添加内容。字符串是不可变的。你可以连接(比如,“有一个新的对象,由这两个对象组成”)字符串。但你不能将其附加(比如,“这个特定的对象现在在末尾有了这个”)。

谢谢解释,现在我明白了myList [1]是字符串“from form”。 - Zeynel

0
你正在尝试为已创建的列表中的每个项目添加额外的信息。
    alist[ 'from form', 'stuff 2', 'stuff 3']

    for j in range( 0,len[alist]):
        temp= []
        temp.append(alist[j]) # alist[0] is 'from form' 
        temp.append('t') # slot for first piece of data 't'
        temp.append('-') # slot for second piece of data

    blist.append(temp)      # will be alist with 2 additional fields for extra stuff assocated with each item in alist  

0
这是一个展示如何向列表中添加元素 append('t') 的简单程序:
n=['f','g','h','i','k']

for i in range(1):
    temp=[]
    temp.append(n[-2:])
    temp.append('t')
    print(temp)

输出:

[['i', 'k'], 't']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接