过滤元组的列表

问题描述:

我有一个元组列表,我想筛选出的所有元素,其中的元组的第二个值不等于7过滤元组的列表

我做的:

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

我可以使用通配符表示使其更短吗?

谢谢。

+2

你试过了吗?无论你在哪里看到'x => ... x ...'替换为'... _ ...' – 2013-05-08 21:03:08

您可以

valuesAsList.filter(_._2 != 7) 

但我怀疑它应该优先于你的榜样或本(认为可读性):

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

FWIW,我总是会写'filter(_._ 2!= 7)',而不是任何更大的笨拙的东西。我不在乎'v',只是'_2!= 7';其他一切都会分散注意力。 '_.'是可能的最小分心。 – 2013-05-08 21:04:53

+2

第二种情况更具可读性。 – Ampers4nd 2014-06-25 14:09:46

+0

其次是更具可读性,因为你可以给'v'一个名字,这个名字将描述你正在与'7'进行比较。 – cevaris 2017-04-05 18:07:20

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

valuesAsList.filter(_._2 != 7)