43

の利便性をお願いします

for i, line in enumerate(open(sys.argv[1])):
  print i, line

Scalaで次のことを行うとき

for (line <- Source.fromFile(args(0)).getLines()) {
  println(line)
}
4

2 に答える 2

53

zipWithIndexfromIterableトレイトを使用できます。

for ((line, i) <- Source.fromFile(args(0)).getLines().zipWithIndex) {
   println(i, line)
}
于 2011-06-26T20:19:57.670 に答える
10

他の人がすでに答えているように、インデックスを0から開始したい場合は、次を使用できますzipWithIndex

for ((elem, i) <- collection.zipWithIndex) {
    println(i, elem)
}

コレクション自体で呼び出された場合はコレクションのコピーを作成するため、代わりにzipWithIndexコレクションのに呼び出すことをお勧めします。viewcollection.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をご覧ください。

于 2018-10-19T23:48:53.533 に答える