下面的代码检查x和y是不同的值(变量x,y,z只能有值a,b或c),并且如果是这样,套z到第三个字符:
x
y
z
a
b
c
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'
能否以更简洁,可读和有效的方式做到这一点?
z = (set(("a", "b", "c")) - set((x, y))).pop()
我假设您的代码中的三种情况之一成立。在这种情况下,该集合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))