#python #python-3.x #append #error-list
#python #python-3.x #добавить #ошибка-список
Вопрос:
Я новичок в этом мире, и я начинаю делать свои первые шаги в python. Я пытаюсь извлечь в один список индексы определенных значений моего списка (те, которые больше 10). При использовании append я получаю следующую ошибку и не понимаю, в чем ошибка.
dbs = [0, 1, 0, 0, 0, 0, 1, 0, 1, 23, 1, 0, 1, 1, 0, 0, 0,
1, 1, 0, 20, 1, 1, 15, 1, 0, 0, 0, 40, 15, 0, 0]
exceed2 = []
for d, i in enumerate(dbs):
if i > 10:
exceed2.append= (d,i)
print(exceed2)
Комментарии:
1. Вам не нужно использовать a
=
для вызоваappend
.2.
.append()
принимает только одно значение. Смотрите этот учебник .3. Кроме того, append принимает только один аргумент. Если вы пытаетесь добавить кортеж, вам нужно написать `exceed2.append((d, i)).
Ответ №1:
Вы, вероятно, имеете в виду написать
for i, d in enumerate(dbs):
if d > 10:
exceed2.append(i)
print(exceed2)
Здесь несколько исправлений:
append=()
недопустимый синтаксис, вы должны просто написатьappend()
i, d
значения изenumerate()
возвращают значения и индексы. Вы должны проверятьd > 10
, поскольку это значение (согласно вашему описанию задачи). Тогда вы должны помещать толькоi
вexceed2
массив. (Я переключаю переменныеi
andd
так,i
index
чтобы это было более обычным)append(d,i)
все равно не сработает, посколькуappend
принимает один аргумент. Если вы хотите добавить как значение, так и индекс, вам следует использовать.append((d, i))
, который добавит кортеж обоих в список.- вероятно, вы не хотите печатать
exceed2
каждый раз при выполнении условия, когда вы могли бы просто распечатать его один раз в конце.
Комментарии:
1. Чтобы быть педантичным, синтаксис не является недопустимым, поэтому вы получаете ошибку времени выполнения. Если бы у вас был другой объект, например
class Foo: pass
, тогдаfoo = Foo()
вы могли бы все сделатьfoo.append = (d, i)
просто отлично, это присвоило бы кортеж.append
атрибуту. Ноlist
объекты этого не допускают2. Это должно быть
if i > 10
,d
будет иметь значение index not.3. о, правда, я просто копировал из OP, не задумываясь.
4. @AlexKritchevsky Затем, пожалуйста, отредактируйте свой ответ.
5. Я уже это сделал. Я переключил
i
d
переменные и, чтобы иметь смысл.
Ответ №2:
Добро пожаловать в этот мир: D
проблема в том, что .append на самом деле является функцией, которая принимает только один ввод и добавляет этот ввод в самый конец любого списка, который вы предоставляете.
Попробуйте это вместо:
dbs = [0, 1, 0, 0, 0, 0, 1, 0, 1, 23, 1, 0, 1, 1, 0, 0, 0,
1, 1, 0, 20, 1, 1, 15, 1, 0, 0, 0, 40, 15, 0, 0]
exceed2 = []
for d, i in enumerate(dbs):
if i > 10:
exceed2.append(i)
print(exceed2)