有没有一种简单的方法可以将数组/列表中的每个元素相互相乘 - Kotlin?

Bob*_*ity 2 kotlin

我有{1,2,3}/或者可能是有list<Int>没有一种简单的方法可以将每个元素彼此相乘,例如1*2 , 1*3, 2*3

hot*_*key 5

这应该可行,因为您可能不想包含像items[i] * items[j]和 这样的重复项items[j] * items[i]

val items = listOf(1, 2, 3, 4)

val result = items.flatMapIndexed { index, a -> 
    items.subList(index + 1, items.size).map { b -> a * b }
}

println(result) // [2, 3, 4, 6, 8, 12]
Run Code Online (Sandbox Code Playgroud)
  • flatMapIndexeditems通过评估索引和项目上的 lambda来为每个元素构建一个列表,然后连接这些列表。
  • subList是获取特定范围内的项目的有效方法:从下一个索引开始,直到列表末尾。

  • 您可以通过简单地删除“+ 1”来包含每个项目的平方(与其自身相乘)。 (2认同)