【问题标题】:Creating a lists of sums from a list从列表中创建总和列表
【发布时间】:2014-04-04 17:59:09
【问题描述】:

有没有更时髦的方法来做到这一点?也就是说,从原始列表中的 3 个数字组的总和创建一个新列表。

    myList = [1,2,3,4,5,6,7,8,9]
    newList = []

    while (myList.size > 0) {
      newList.add(myList.pop() + myList.pop() + myList.pop())
    }

    println newList.reverse()

    [6, 15, 24]

【问题讨论】:

    标签: list collections groovy


    【解决方案1】:

    这个怎么样:

    myList.collate(3).collect {it.sum()}
    

    或者只是很好地使用扩展运算符*

    myList.collate(3)*.sum()
    

    【讨论】:

      【解决方案2】:

      您可以使用collate 将列表分组为 3 个元素的子列表:

      groovy:000> myList = [1,2,3,4,5,6,7,8,9]
      ===> [1, 2, 3, 4, 5, 6, 7, 8, 9]
      groovy:000> myList.collate(3)
      ===> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
      

      然后对每个子列表求和;总和可以通过注入完成:

      groovy:000> myList.collate(3)*.inject(0) { sum, i -> sum + i }
      ===> [6, 15, 24]
      

      或者只是使用这个方便的方法sum

      groovy:000> myList.collate(3)*.sum()
      ===> [6, 15, 24]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        • 2021-12-08
        • 2021-07-26
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多