Python中查找列表B元素在列表A中对应索引位置的解决方案
报错原因
- 方法调用逻辑完全写反:
list.index(x)的作用是返回调用该方法的列表内,参数x第一次出现的索引。你的代码写的是B.index(A),相当于在只有2个元组元素的B列表里查找整个A列表,B中不存在这个元素,必然触发ValueError。 - 需求逻辑颠倒:你需要查询的是B中每个元素在A里的位置,不是A在B里的位置。
- 存在无效代码:导入了
numpy但全程没有使用。
修复代码
Python列表默认索引从0开始计数,直接查询B中元素在A里的0基索引结果为[2,7];你给出的期望输出[3,8]是从1开始计数的位置结果,匹配期望输出的可运行代码如下:
A = [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] B = [(0, 2), (2, 1)] # 遍历B中每个元素,查询A中对应索引后+1,匹配从1计数的要求;需要0基索引删掉+1即可 C = [A.index(item) + 1 for item in B] print("C =", C)
运行输出:
C = [3, 8]
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

