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

标签 python benchmarking microbenchmark

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

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

最佳答案

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))

关于python - 如何更简洁地找到缺失值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8792440/

相关文章:

performance - Julia - CartesianIndices 的性能

performance - Redis 在插入方面似乎比 PostgreSQL 慢

scala - 比较 Scala 可变、不可变集合与 java.util.concurrent.* 集合的微基准测试

python - Pandas 数据框 : selecting max by column for subset

python - 加快 gtk.IconView 中的图像加载速度

python - 如何使用 isnan 键对 numpy 数组进行排序?

python - 如何模拟 MongoClient 进行 python 单元测试?

testing - 如何使用 riscv-tests 套件?

c++ - 带有命令行参数的 Google 基准测试。编写我自己的主要功能?

java - 如何用 Java 编写正确的微基准测试?