Scala遍历列表除了最后一个元素

5

如何使用for循环遍历列表,可以不迭代列表中的最后一个元素。

在我的情况下,我想不迭代第一个元素,并且需要倒序迭代。以下是我的代码:

        for( thing <- things.reverse) {
          //do some computation iterating over every element; 
          //break out of loop when first element is reached
        }
2个回答

12

您可以在翻转列表之前删除第一个项目:

for(thing <- things.drop(1).reverse) {
}

对于列表而言,drop(1)tail 在列表非空时是相同的:

for(thing <- things.tail.reverse) {
}

或者你可以首先执行相反的操作,使用dropRight

for(thing <- things.reverse.dropRight(1)) {
}

如果列表非空,您也可以使用init

for(thing <- things.reverse.init) {
}

4
дҪ еҸҜд»ҘдҪҝз”Ё init е’Ң tail жқҘд»Јжӣҝ dropRight е’Ң dropгҖӮеҺҹж„ҸдёҚеҸҳпјҢд»…ж¶ҰиүІе’Ңз®ҖеҢ–иҜӯиЁҖпјҢж— и§ЈйҮҠиҝ”еӣһе…¶д»–дҝЎжҒҜгҖӮ - Régis Jean-Gilles
@RégisJean-Gilles - 谢谢,我已经更新了答案。但是他们要求列表不能为空,所以它们并不完全相同。 - Lee
由于它基本上是可随意丢弃的值,我建议在处理类似的东西时,使用.view(理论上更好,但在实践中并不总是很有效)或者使用.iterator(接口有点别扭,但得到了广泛支持),以避免实际构造反转/删除后的值。 - copumpkin

3

如Régis所述,for(thing <- things.tail.reverse) {}



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接