如何在 Python 中从 '[1, 1, 0, 0, 0] == [0, 0, 1, 1, 0]' 中获取“True”?

How can I get `True` from `[1, 1, 0, 0, 0] == [0, 0, 1, 1, 0]` in Python?

提问人:fronthem 提问时间:4/17/2018 更新时间:4/17/2018 访问量:545

问:

例:

我有一个解决方案列表:a

a = [1, 1, 0, 0, 0]

和输入列表:b

b1 = [1, 1, 0, 0, 0]
b2 = [0, 1, 1, 0, 0]
b3 = [0, 0, 1, 1, 0]
...
bn = [1, 0, 0, 0, 1]

如果我与任何一个进行比较,我希望从比较中获得价值。当然,这个简单的表达式是行不通的:ab1, b2, ..., bnTrue

if a == b:
    ...

因为在 Python 中,只有相同的列表才能相等。

有没有什么漂亮的数学可以让我在编程语言中轻松实现它?现在我正在考虑构建一些哈希函数,但我仍然不确定如何?

注意 1) 只需使用 for 循环即可轻松实现,但我需要一些更强大的东西。2)这可能也与这个帖子循环组的问题有关

布尔代数 哈希函数

评论

0赞 Alex 4/17/2018
对于此类问题,Stackoverflow 比 MSE 要好得多
0赞 xxxxxxxxx 4/17/2018
据我所知,Python 没有任何内置(或任何通用包)可以在某些组操作下轻松进行这种等价比较。最好的办法是在比较之前尝试将所有内容周期性地转换为某种规范形式。或者构建一个哈希函数。
0赞 fronthem 4/17/2018
我认为这是一个数学问题。我不需要代码或一堆 python 函数。我只需要一些可以告诉我和 s 可以匹配的东西,例如一些为特定模式产生相同值的哈希函数,在这种情况下是 s 和 s。abab
4赞 xxxxxxxxx 4/17/2018
这个问题与如何在 Python 中检查两个列表是否循环相同完美复制
0赞 wnoise 4/23/2018
是否有 Python 等效C++“multiset<int>”的可能副本?

答:

0赞 Allan Cao 4/17/2018 #1

一个简单的解决方案是调整 a 和 b 值:

a_original = [5, 2, 3, 1, 4]
a_formatted = sorted(a_original)

然后,您可以只使用格式化的变量。一个简单的“for”循环可用于格式化所有变量。

希望这有帮助!

评论

0赞 xxxxxxxxx 4/17/2018
所以这会对条目进行排序?但是,这难道不会给出与 [1,1,0,0,0] 和 [1,0,1,0,0] 相同的结果吗(这不是循环偏移,因此您不想在这里认为它们相等)?
0赞 Allan Cao 4/17/2018
这个答案是基于我对这个问题的理解。此函数将条目从小到大排序。我不确定这是否是原始海报想要的。