检查两个无序序列是否相等

时间:2018-10-28 20:14:14

标签: python

我正在寻找一种简单(快速)的方法来确定两个无序序列是否包含相同的元素:

例如:

GTTUIP and EGTP 
return [[0,1],[1,2],[2,2],[5,3]]

Python中的任何函数。

1 个答案:

答案 0 :(得分:0)

以下理解将起作用:

s1, s2 = 'GTTUIP', 'EGTP'

i2 = {char: i for i, char in reversed(list(enumerate(s2)))}
# {'P': 3, 'G': 1, 'T': 2, 'E': 0}

[[i, i2[char]] for i, char in enumerate(s1) if char in i2]
# [[0, 1], [1, 2], [2, 2], [5, 3]]

前者在第二个序列中创建从字符到其索引的查找映射。其中的reversed是为了确保我们映射到每个字符的 first 事件的索引。后者通过迭代第一个序列并从第二个序列中查找索引来构建最终结构。