の利便性をお願いします
for i, line in enumerate(open(sys.argv[1])):
print i, line
Scalaで次のことを行うとき
for (line <- Source.fromFile(args(0)).getLines()) {
println(line)
}
zipWithIndex
fromIterableトレイトを使用できます。
for ((line, i) <- Source.fromFile(args(0)).getLines().zipWithIndex) {
println(i, line)
}
他の人がすでに答えているように、インデックスを0から開始したい場合は、次を使用できますzipWithIndex
。
for ((elem, i) <- collection.zipWithIndex) {
println(i, elem)
}
コレクション自体で呼び出された場合はコレクションのコピーを作成するため、代わりにzipWithIndex
コレクションのに呼び出すことをお勧めします。view
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をご覧ください。