[英]Sort list of string based on length
我有一个字符串清单
List("cbda","xyz","jlki","badce")
我想对字符串进行排序,以使奇数长度的字符串按降序排序,偶数长度的字符串按升序排序
List("abcd","zyx","ijkl","edcba")
现在,我通过分别遍历每个元素,然后找到它们的长度并对其进行相应排序来实现此目的。 最后,我将它们存储在单独的列表中。 我希望知道在Scala中是否还有其他有效的方法可以执行此操作,或者可以使用更短的方法来执行此操作(例如我们在Python中具有某种列表理解功能)?
您可以使用sortWith和map来做到这一点:
list.map(s => {if(s.length % 2 == 0) s.sortWith(_ < _) else s.sortWith(_ > _)})
我不确定您在Python中指的是什么,因此如果以下示例与您的期望不符,则详细信息可能会有所帮助
第一个,让您两次浏览列表:
List("cbda","xyz","jlki","badce").map(_.sorted).map {
case even if even.length % 2 == 0 => even
case odd => odd.reverse
}
或者使您遍历两次具有相等长度的元素:
List("cbda","xyz","jlki","badce").map {
case even if even.length % 2 == 0 => even.sorted
case odd => odd.sorted.reverse
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.