我想方便
for i, line in enumerate(open(sys.argv[1])):
print i, line
在 Scala 中执行以下操作时
for (line <- Source.fromFile(args(0)).getLines()) {
println(line)
}
您可以使用zipWithIndex
from Iterable 特征:
for ((line, i) <- Source.fromFile(args(0)).getLines().zipWithIndex) {
println(i, line)
}
正如其他人已经回答的那样,如果您希望索引从 0 开始,您可以使用zipWithIndex
:
for ((elem, i) <- collection.zipWithIndex) {
println(i, elem)
}
因为zipWithIndex
如果在集合本身上调用会创建集合的副本,您可能希望将其调用到view
集合的 a 中:collection.view.zipWithIndex
.
尽管如此,Pythonenumerate
有一个可选参数来设置索引的起始值。在 scala 中,您可以执行以下操作:
for ((elem, i) <- collection.zip(Stream from 1) {
println(i, elem)
}
如需更长时间的讨论,请阅读https://alvinalexander.com/scala/how-to-use-zipwithindex-create-for-loop-counters-scala-cookbook。