Python:TypeError:只能在第9行分配iterable

2024-06-02 07:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码。我希望句子中每个单词的长度都被分配到列表中“作为整数”(不是字符串),但得到的错误与主题中的一样。求求你,救命

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)

Tags: 字符串密码主题列表错误整数单词num
2条回答

所讨论的行是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

如果要向列表中添加项目,可以使用append()函数。我认为你试图用一种更复杂的方法来解决一个简单的问题。在代码中,在每个" "处拆分一个字符串。这将有效地创建一个列表,其中包含original_str中由" "分隔的所有单词。然后迭代该列表。对于original_strSplit(现在是一个列表)中的每个单词,使用append()函数追加该单词的长度len(each)。由于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]

相关问题 更多 >