使用 Python 3,我想按升序遍历第一个列表中的项目,并在第二个列表中找到该项目的索引以将其存储到第三个结果列表中。下面是一个工作示例:list1 = [53, 65, 67, 37, 14, 98, 122, 124, 183]list2 = [0, 14, 37, 53, 65, 67, 98, 122, 124, 183, 199]wanted_output = getWantedOutput(list1, list2)print(wanted_output)>>> [3, 4, 5, 2, 1, 6, 7, 8, 9]
3 回答
森林海
TA贡献2011条经验 获得超2个赞
这种方法的可读性不如其他给出的答案,但如果您的列表很长,它会更快。
wanted_output = []
for item in list1:
try:
wanted_output.append(list2.index(item))
except ValueError: # item not in list2
continue
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
长列表最有效的解决方案是预处理第二个列表并将其转换为字典,其中列表项是键,它们的位置是值。然后在该字典中查找第一个列表中的元素:
positions = {item: pos for pos, item in enumerate(list2)}
[positions[item] for item in list1]
#[3, 4, 5, 2, 1, 6, 7, 8, 9]
阿波罗的战车
TA贡献1862条经验 获得超6个赞
list1 = [53, 65, 67, 37, 14, 98, 122, 124, 183]
list2 = [0, 14, 37, 53, 65, 67, 98, 122, 124, 183, 199]
[list2.index(x) for x in list1 if x in list2]
Output:
[3, 4, 5, 2, 1, 6, 7, 8, 9]
添加回答
举报
0/150
提交
取消
