一尘不染

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

python

下面的代码检查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'

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


阅读 129

收藏
2021-01-20

共1个答案

一尘不染

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))
2021-01-20