getDifference=lambda string1, string2: reduce((lambda character1, character2: character1+character2), (set(string1)-set(string2)))
print getDifference('abcde','adf')
在第一行中,我定义了一个lambda表达式,用于查找string1和string2之间的差异。我假设输出应该是“bce”,但它是“cbe”,为什么?
答案 0 :(得分:4)
集合是唯一元素的无序集合 - 因此字符的顺序不会通过集合操作保留。点击此处查看更多信息:
答案 1 :(得分:0)
Python集不保留排序。要保留订单,您可以使用列表解析:
def diff(s1, s2):
return "".join([c for c in s1 if c not in s2])
diff('abcde','adf') # 'bce'
许多set实现都使用散列,它将元素的顺序混合为副作用。但是,存在有序的集合实现,例如树集。