AttributeError: объект 'str' не имеет атрибута 'append'
>>> 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
. Спасибо.
Edit01:
@pyfunc: Спасибо за объяснение; теперь я понимаю.
Мне нужно иметь список списков; поэтому "из формы" должен быть список. Я сделал это (пожалуйста, исправьте, если это не так):
>>> 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
myList [1] - это элемент myList, и это тип string.
myList [1] - str, вы не можете добавить к нему.
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'
>>>
Ответ 2
Если вы хотите добавить значение в myList, используйте myList.append(s)
.
Строки неизменяемы - вы не можете добавлять к ним.
Ответ 3
Почему myList [1] считается объектом 'str'?
Потому что это строка. Что еще есть 'from form'
, если не строка? (На самом деле, строки также являются последовательностями, то есть они могут быть проиндексированы, нарезаны, повторены и т.д., А также - но эта часть класса str
и не делает его списком или чем-то еще).
mList[1]
возвращает первый элемент в списке 'from form'
Если вы имеете в виду, что myList
есть 'from form'
, нет, это не так!!! второй (индексирование начинается с 0) элемент - 'from form'
. Это БОЛЬШАЯ разница. Это разница между домом и человеком.
Кроме того, myList
не должен быть list
из вашего примера с коротким кодом - это может быть все, что принимает 1
как index - a dict с 1 как индекс, список, кортеж, большинство другие последовательности и т.д. Но это не имеет значения.
но я не могу добавить к элементу 1 в списке myList
Конечно, нет, потому что это строка, и вы не можете присоединить ее к строке. Строка неизменна. Вы можете объединить (как в строках "новый объект, состоящий из этих двух" ). Но вы не можете append
(как в, "этот конкретный объект теперь имеет это в конце" ).
Ответ 4
То, что вы пытаетесь сделать, это добавить дополнительную информацию к каждому элементу в списке, который вы уже создали, поэтому
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
Ответ 5
Это простая программа, показывающая добавление ('t') в список.
п = [ 'е', 'G', 'ч', 'я', 'к']
for i in range(1):
temp=[]
temp.append(n[-2:])
temp.append('t')
print(temp)
Вывод: [['i', 'k'], 't']