【发布时间】:2019-05-17 00:23:59
【问题描述】:
我正在比较 Python 中的两个列表。
list1 是list2 的超集。
对于list1 的元素,我希望它们在list2 中的索引(如果存在)。
这里有两个例子。
list1 = ['a','b','c','d']
list2 = ['a','b']
解决方案应该产生[0, 1]。
list1 = ['a','b','c','d']
list2 = ['b','a']
解决方案应该产生[1, 0]。
我尝试了以下代码,但它仅适用于第一个示例。
list1 = ['a','b','c','d']
list2 = ['a','b']
pairwise = zip(list1,list2)
matched_index = [idx for idx, pair in enumerate(pairwise) if pair[0] == pair[1]]
这行得通。但是,对于第二组样本数据,我得到了错误的输出 [],而不是预期的输出 [1, 0]。
list1 = ['a','b','c','d']
list2 = ['b','a']
pairwise = zip (list1,list2)
matched_index = [idx for idx, pair in enumerate(pairwise) if pair[0] == pair[1]]
print(matched_index) # prints []
请提出前进的方向。
【问题讨论】:
-
我重新打开了这个问题,因为来自标记副本的接受答案为 OP 的第二个示例产生了错误的结果。骗子产生
[0, 1],但OP想要[1, 0]。 -
换句话说,OP 想要将
list1的元素映射到它们在list2中的索引。 -
list2 = ['c','a']的预期结果是什么?