假设我想迭代KotlinIntArray中除了第一个元素之外的所有元素,目前我是这样做的:
IntArray
fun minimalExample(nums: IntArray): Unit { for(num in nums.sliceArray(IntRange(1,nums.size-1))) println(num) }
有没有像Python中那样简单的语法来完成这个操作(我不想指定nums数组的结束索引):
nums
for (num in nums[1:])
s4chpxco1#
我认为你可以使用Kotlin的drop,它将删除数组的前n个元素。
drop
n
fun minimalExampleWithDrop(nums: IntArray): Unit { for(num in nums.drop(1)) println(num) } minimalExampleWithDrop(intArrayOf(1,2,3,4,5,6)) // 2 // 3 // 4 // 5 // 6
Repl.it
uxh89sit2#
以1作为起始索引的基本for循环
1
val myList = intArrayOf(1,2,3,4,5,6) for(i in 1 until myList.size){ Log.d(TAG,"${myList[i]}") }
或者,由于它是IntArray,您可以将其用作Iterator并跳过here所示的元素
Iterator
val iterator = myList.iterator() // skip an element if (iterator.hasNext()) { iterator.next() } iterator.forEach { Log.d(TAG,"it -> $it") }
58wvjzkj3#
你也可以选择使用slice方法,它出现在列表和数组中。下面是这两种方法的例子:
slice
val a = listOf(1, 2, 3, 4) println(a.slice(1..a.size - 1)) val b = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9) println(b.slice(4..5))
这将打印输出:
[2, 3, 4] [5, 6]
k10s72fa4#
为了补充@gil.fernandes的答案,可以将slice与until结合使用,如下所示:
until
val list = arrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) println(list.slice(0 until 5))
这将输出:
[0, 1, 2, 3, 4]
4条答案
按热度按时间s4chpxco1#
我认为你可以使用Kotlin的
drop
,它将删除数组的前n
个元素。Repl.it
uxh89sit2#
以
1
作为起始索引的基本for循环或者,由于它是
IntArray
,您可以将其用作Iterator
并跳过here所示的元素58wvjzkj3#
你也可以选择使用
slice
方法,它出现在列表和数组中。下面是这两种方法的例子:这将打印输出:
k10s72fa4#
为了补充@gil.fernandes的答案,可以将
slice
与until
结合使用,如下所示:这将输出: