只是为了好玩,如果您希望通过第一个字符串推断类型。您可以从__builtin__ 模块中获取它。
def typify(seq):
seq = iter(seq)
typestr = next(seq)
return getattr(__builtin__, typestr)(seq)
comp3 = list(map(typify, comp3))
该函数接受第一个参数,从__builtin__ 模块中找到等效类型,并将其应用于序列的其余部分。
然后我们可以map这个函数对你列出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