繁体   English   中英

根据长度排序字符串列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM