Python 什么是比较两个变量的最简单的方法?

Python 什么是比较两个变量的最简单的方法?,python,pandas,Python,Pandas,我想写一个通用的比较函数,如果a和b有相同的元素和数量,不管这些元素是如何排序的,它可以告诉我们a和b相等。此外,我希望通用的解决方案,可以与所有类型的工作,在类型不匹配的情况下,一些消息被打印出来。例如: a = [1, 2] b = [2, 1] my_func(a, b) >>> True c = pd.DataFrame({'col1':[0, 1], 'col2':[2, 3]) d = pd.DataFrame({'col1':

我想写一个通用的比较函数,如果a和b有相同的元素和数量,不管这些元素是如何排序的,它可以告诉我们a和b相等。此外,我希望通用的解决方案,可以与所有类型的工作,在类型不匹配的情况下,一些消息被打印出来。例如:

a = [1, 2]
b = [2, 1]
my_func(a, b)
>>> True

c = pd.DataFrame({'col1':[0, 1],
                  'col2':[2, 3])
d = pd.DataFrame({'col1':[1, 0],
                  'col2':[3, 2])
my_func(c, d)
>>> True

my_func(a, c)
>>> Different types to compare!
>>> False
当然,所有的检查和排序都可能是硬编码的,但我想知道是否有一种优雅的方法可以做到这一点。

比较事物的“pythonic”方法是

a == b
如果要比较列表而不考虑顺序,但要确保它们具有相同数量的元素,可以使用
collections.Counter

from collections import Counter
Counter(a) == Counter(b)

你说的是数据帧。。。这不是普通的python,如果您提出一个
属性错误
,尝试比较不同的类型时,如果它没有引发
异常
,将始终返回
False
。看起来你在试图覆盖很多基地。仅当元素及其顺序相同时,比较两个
列表
将返回
True
。要比较的
DataFrames
有点困难,因为它更复杂type@roganjosh嗯,他们声明了任何数据类型,这个问题实际上不是一个问题。无论如何,我怀疑是否有一种类似蟒蛇的方法可以做到这一点。Python是一种强类型语言,不同类型之间的比较会引发错误。我质疑创建这样一个功能的智慧和动机。在任何情况下,IMO都没有很好地说明这一点。“元素”到底是什么?