如何更简洁地找到缺失值?

发布于 2021-01-29 15:09:39

下面的代码检查xy是不同的值(变量xyz只能有值abc),并且如果是这样,套z到第三个字符:

if x == 'a' and y == 'b' or x == 'b' and y == 'a':
    z = 'c'
elif x == 'b' and y == 'c' or x == 'c' and y == 'b':
    z = 'a'
elif x == 'a' and y == 'c' or x == 'c' and y == 'a':
    z = 'b'

能否以更简洁,可读和有效的方式做到这一点?

关注者
0
被浏览
67
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    z = (set(("a", "b", "c")) - set((x, y))).pop()
    

    我假设您的代码中的三种情况之一成立。在这种情况下,该集合set(("a", "b", "c")) - set((x, y))将由单个元素组成,由返回pop()

    编辑: 正如Raymond Hettinger在评论中所建议的那样,您还可以使用元组拆包从集合中提取单个元素:

    z, = set(("a", "b", "c")) - set((x, y))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看