Python: TypeError: можно назначить итерацию только в строке 9 - PullRequest
0 голосов
/ 28 января 2020

Вот мой код. Я ожидаю, что длина каждого слова в предложении будет назначена списку «AS INTEGERS» (не в виде строки), но получаю ошибку, как в теме. Пожалуйста, помогите !!

original_str = "The quick brown rhino jumped over the extremely lazy fox"

i = 0
num_words_list = []
original_strSplit = original_str.split(" ")

for each in original_strSplit:
   num_words_list[i:] = len(each)
   i += 1
   print(num_words_list)

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Если вы добавляете элементы в список, вы можете использовать функцию append(). Я думаю, что вы пытаетесь принять более сложный подход к простой проблеме. В своем коде вы разделяете строку на каждом " ". Это фактически создает список со всеми словами в original_str, которые разделены " ". Затем вы перебираете этот список. Для каждого слова в original_strSplit (который теперь является списком) добавьте длину этого слова len(each) с помощью функции append(). Поскольку функция len() возвращает integer, вы можете просто поместить это значение в список, используя append(len(each)).

original_str = "The quick brown rhino jumped over the extremely lazy fox"

num_words_list = []
original_strSplit = original_str.split(" ")

for each in original_strSplit:
   num_words_list.append(len(each))

print(num_words_list)

Вывод: [3, 5, 5, 5, 6, 4, 3, 9, 4, 3]

0 голосов
/ 28 января 2020

Строка, о которой идет речь, 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...