Python:比较两个列表

Python:比较两个列表,python,list,set,compare,Python,List,Set,Compare,我尝试使用Python比较这两个列表: comp1 = [['set',1,2]] comp2 = [['set',2,1]] 两者都是集合{1,2}的有效表示形式 我主要想检查这些列表comp1和comp2是否相等,但我不确定如何在Python中实现这一点 我还想了解我将如何使用以下列表: comp3 = [['set',1,2],['set',3,4]] comp4 = [['set',2,1],['set',4,3]] 这种方法如何使用: 只是为了好玩,如果您希望由第一个字符串推断类型

我尝试使用Python比较这两个列表:

comp1 = [['set',1,2]]
comp2 = [['set',2,1]]
两者都是集合{1,2}的有效表示形式

我主要想检查这些列表comp1和comp2是否相等,但我不确定如何在Python中实现这一点

我还想了解我将如何使用以下列表:

comp3 = [['set',1,2],['set',3,4]]
comp4 = [['set',2,1],['set',4,3]]

这种方法如何使用:


只是为了好玩,如果您希望由第一个字符串推断类型。您可以从内置模块中获取它

该函数获取第一个参数,从_内置_模块中找到等效类型,并将其应用于序列的其余部分。 然后,我们可以将此函数映射到列表comp3的所有子元素上。 在python2上,map将返回一个列表,而在python3中,您必须显式地转换它,否则它只会给您留下一个生成器

这是非常通用的,因此如果您传递不同的类型,它将自动识别它:

comp3 = [['list',1,2],['set',3,4]]
list(map(typify, comp3))
#[[1, 2], {3, 4}]
在那之后你就可以做了

comp3 = [['set',1,2],['set',3,4]]
comp4 = [['set',2,1],['set',4,3]]

comp3 = list(map(typify, comp3))
comp4 = list(map(typify, comp4))

comp3 == comp4

我尝试了这个,但我得到了TypeError:Unhabable type:“list”当我尝试运行它时,这很酷,我从来没有意识到我可以从uuuu builtin_uuuuulol获取Attr,想过用eval做些什么,但这可能会导致灾难它总是依赖于源…如果你从外部获取数据是的,这将是危险的,但如果你是源,eval可以用于OrderedDict或类似的非内置类
def typify(seq):
    seq = iter(seq)
    typestr = next(seq)
    return getattr(__builtin__, typestr)(seq)

comp3 = list(map(typify, comp3))
comp3 = [['list',1,2],['set',3,4]]
list(map(typify, comp3))
#[[1, 2], {3, 4}]
comp3 = [['set',1,2],['set',3,4]]
comp4 = [['set',2,1],['set',4,3]]

comp3 = list(map(typify, comp3))
comp4 = list(map(typify, comp4))

comp3 == comp4