【问题标题】:partition list into groups of size-N将列表划分为大小为 N 的组
【发布时间】:2018-12-01 01:05:51
【问题描述】:

获取列表并将其分组为大小为 n 的元组的惯用方式是什么?

例如:用三元组分成三组

val list = listOf(1,2,3,4)
val partitioned = list.groupsOf(3)

// partitioned[0] = List<Int> 1, 2, 3
// partitioned[1] = List<Int> 4

但最好是这样的

val list = listOf(1,2,3,4)
val newList = mutableListOf()

list.forGroupsOf(3) { triple: Triple<Int?> ->
    newList.add( triple )
}

// partitioned[0] = Triple<Int?> 1, 2, 3
// partitioned[1] = Triple<Int?> 4, null, null 

注意:List.groupsOfList.forGroupsOf 这个例子是我编造的

【问题讨论】:

    标签: list kotlin functional-programming partition


    【解决方案1】:

    Kotlin 提供了一个名为 chunked(n) 的函数,它生成一个列表列表,每个列表有 n 个元素:

    val list = listOf(1, 2, 3, 4)
    val tuples = list.chunked(2).map { Tuple(it[0], it[1]) }
    

    或者:

    val list = listOf(1, 2, 3, 4)
    val tuples = list.chunked(2) { Tuple(it[0], it[1]) }
    

    请记住,这会生成包含 ma​​x n 个元素的列表。

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 2012-07-12
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多