【发布时间】:2014-01-10 13:38:37
【问题描述】:
我有两个列表 list1 和 list2。我在 stackoverflow 上找到了一个非常简单的方法来获取这两个列表中的公共元素,如下result = list(set(list1) & set(list2))。不幸的是,这样一来,结果列表中的元素顺序就不会被保留。
例如:
list1 = ['a', 'e', 't', 'b', 'c']
list2 = ['e', 'b', 'a', 'c', 'n', 's']
我希望结果(公共元素)按此顺序为['e', 'a', 'b', 'c']。因为,例如,“e”在 list1 和 list2 中,并且在 list1 中的位置 2 和 list2 中的位置 1,而“a”在 list1 和 list2 中,并且在 list1 中的位置 1 和 list2 中的位置 3,所以 'e' 在 'a' 之前,因为 2+1
那么,有没有什么简单的方法可以让两个列表之间有共同的元素并保持元素的顺序?
【问题讨论】:
-
假设 'e' 和 't' 在 list1 中交换,您希望采用什么顺序?
-
list1=['a','b']; list2=['b','a']的预期输出是什么?按照您的算法,“a”和“b”都具有相同的位置值3,那么哪个先出现? -
@Kevin 在这种情况下,结果是 [a, b] 还是 [b, a] 都没有关系