Строка, о которой идет речь, num_words_list[i:] = len(each)
.
Вопрос в том, что вы пытаетесь сделать в этой строке?
Если вы пытаетесь добавить новый элемент в конец списка, тогда, возможно, вы захотите использовать функцию Python append
, которая делает именно это.
Например, num_words_list.append(...)
добавит значение вместо ...
на конец списка.
Если вы пытаетесь заменить существующий элемент списка, тогда ваша строка кода почти верна, но не должна содержать случайное двоеточие. Вместо этого оно должно читаться так: num_words_list[i] = ...
. Однако в вашем случае это не сработает, поскольку в вашем списке нет элементов для замены (в конце концов, он начинается пустым).
В Python вы можете использовать двоеточие в скобках при доступе к списку, но при этом создается фрагмент списка или подсписок. Например, если вы пишете num_words_list[3:8]
, то он разрезает список, обрезая его непосредственно перед элементом 3 и непосредственно перед элементом 8, создавая новый более короткий список, содержащий 5 элементов (элементы 3, 4, 5, 6 и 7) из оригинального списка. Конечно, это имеет смысл только в том случае, если в списке действительно содержится столько элементов. При желании вы можете опустить конечные точки среза. Если вы опускаете первую конечную точку, срез начинается в начале списка, а если вы опускаете вторую конечную точку, то срез заканчивается в конце списка. Итак, вы непреднамеренно создавали срез, который расширялся непосредственно перед элементом i
и переходил в конец списка. Вы также пытались назначить этому срезу, заменив его другим списком, но значение, которое вы заменяли на (len(each)
), не было списком, в результате чего вы увидели TypeError
.