如何使用enumerate写单行for循环提取列表中匹配指定值的所有索引
正确实现代码
my_id = 3 word_ids = [None, 0, 1, 2, 3, 3, 3, 4, None] # 单行列表推导式实现需求 list_of_word_ids = [idx for idx, val in enumerate(word_ids) if val == my_id]
运行后list_of_word_ids的取值为[4, 5, 6],完全符合预期输出要求。
原有代码错误说明
enumerate语法使用错误:enumerate()需要传入待遍历的列表作为入参,每次遍历返回的是(索引位置, 对应元素值)的元组,正确遍历写法为for 索引变量, 值变量 in enumerate(目标列表)- 变量名不匹配:你代码中用到的
inputs、id_word和实际定义的word_ids、my_id变量名无法对应,导致逻辑执行报错。
内容的提问来源于stack exchange,提问作者Kadaj13
相关产品推荐
相关产品推荐

