#python
Вопрос:
Почему я получаю ошибку ValueError: list.remove(x): x not in list
в приведенном ниже коде? 85
явно есть в списке зачетных книжек.
grades = [98, 97, 85, 88]
gradebook = [["physics", 98], ["calculus", 97], ["poetry", 85], ["history", 88]]
gradebook.remove(85)
Комментарии:
1.
grades
содержит 85.gradebook
не содержит.2. Возможно, вы захотите
gradebook = [k for k in gradebook if k[1] != 85]
.3. «85 явно в списке зачетных книжек» — нет, это явно не так. С другой стороны,
["poetry", 85]
он явно находится в этом списке…
Ответ №1:
gradebook.remove(85)
удалил бы элемент, значение которого равно 85. зачетная книжка содержит вложенные списки, а не целые числа. Вы имели в виду:
grades.remove(85)
или
gradebook = [ [subject,grade] for subject, grade in gradebook if grade != 85 ]
Ответ №2:
Это будет модификация , которую вы должны внести в зачетную книжку[nested_list_location].удалите(your_int_value), так как вы работаете с вложенными списками.
gradebook = [["physics", 98], ["calculus", 97], ["poetry", 85], ["history", 88]]
gradebook[-1].remove(88)
# will result in [['physics', 98], ['calculus', 97], ['poetry', 85], ['history']]
Ответ №3:
Попробуйте это вместо этого:
gradebook.remove(["poetry", 85])
При попытке удалить элемент вам необходимо указать list[Union[str, int]]
, потому что каждый из элементов в вашем списке ( gradebook
) имеет тип list[Union[str, int]]