当前位置: 首页 > 面试题库 >

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

武友樵
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 如何以pythonic方式从排序列表中找到缺失的号码? 我看过这篇文章,但是有没有更有效的方法呢? 问题答案: 或者(使用AP系列公式的总和) 对于可能缺少多个数字的一​​般情况,可以制定O(n)方法。

  • 问题内容: 我有一个表,带有2个重要列DocEntry,WebId 样本数据就像 现在我们可以在这里注意到,在WebId列中缺少S004。我们如何通过查询找到这些缺失的数字。 进一步说明: 如果网站ID之间缺少任何数字,则Web ID应按升序排列,例如S001,S002,S003,S004,S005。我没有任何单独的表格来输入可能的条目,因为这是不切实际的。我必须逐月查找丢失的数字,以每个月的开始

  • 我想从中使用docx4j从DOCX文件中提取文本,如下所示: 虽然存在“R::GetContent”和“R::GetRPR”,但我想知道为什么文本文档中不存在“R::GetText”。

  • 我似乎看到了许多答案,其中有人建议使用生成随机数,通常与下面这样的代码一起生成: 通常这会取代某种“不神圣的可憎之物”,例如: 可以(有时)实现为具有固定种子的简单PRNG。因此,它可能在每次运行时产生相同的序列。(链接)这比还要糟糕。 更糟糕的是,复制和粘贴前面的代码段非常容易,尽管它们包含问题。一些解决方案需要获取大型图书馆,但这并不适合所有人。 有鉴于此,我的问题是如何在C++中简洁、可移植

  • 我不想限制BigDecimal中有效位数的数量。我只想找到那个数字的有效位数。 有没有一种方法可以在不将数字转换为字符串并计算数字字符的情况下实现这一点?

  • 抽象是编程的关键。你应该仔细选择你需要抽象的程度。充满活力的初学者经常创建许多没有什么用的抽象。一个标识是,你是否创建了这样一个类,不包含任何代码并且没有真的做什么事情,除了抽象一些东西。这种抽象是可以理解的,但代码的简洁性的价值必须与代码的抽象价值相权衡。有时候,我们可以看到一种热情的理想主义者犯的错误:在工程的一开始,定义了一大堆的看起来抽象得很美的类,然后他会推测说它们可以处理每一个可能出现