【问题标题】:Filtering a list of tuples过滤元组列表
【发布时间】:2013-05-03 05:45:18
【问题描述】:

我有一个元组列表,我想过滤掉元组中第二个值不等于 7 的所有元素。

我愿意:

valuesAsList.filter(x=>x._2 != 7)

我可以使用通配符表示法来缩短它吗?

谢谢。

【问题讨论】:

  • 你试过了吗?无论你在哪里看到 x => ... x ... 替换为 ... _ ...

标签: list scala filter


【解决方案1】:

你可以

valuesAsList.filter(_._2 != 7)

但我怀疑它应该优于您的示例或这个(认为可读性):

valuesAsList.filter {case (_, v) => v != 7}

【讨论】:

  • FWIW,我总是写filter(_._2 != 7),而不是任何更大的笨拙的东西。我不关心v,只关心_2 != 7;其他一切都会分散注意力。 _. 是最小的干扰。
  • Second 更具可读性,因为您可以给 v 一个名称,这将描述您与 7 比较的内容。
【解决方案2】:

相当直截了当,恕我直言,没有真正的优势:

valuesAsList.filter(_._2 != 7)

【讨论】:

    【解决方案3】:

    对于元组数组,我们可以使用 for 和 yield 来返回一个数组

    scala> val str = Array((2,Hello), (3,MyNameIs), (8,Lolo))

    res34: Array[(Int, String)] = Array((2,Hello), (3,MyNameIs), (8,Lolo))

    scala> for(i 4)) yield (i._1,i._2.toLowerCase)

    res35: Array[(Int, String)] = Array((2,hello), (3,mynameis))

    【讨论】:

    • 这个有 6 年历史的问题需要更短的解决方案。你提供了一个更长的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2023-01-27
    • 1970-01-01
    相关资源
    最近更新 更多