python 枚举有 Scala 等价物吗?
能够方便一些
for i, line in enumerate(open(sys.argv[1])):
print i, line
我希望在 Scala 中执行以下操作时
for (line <- Source.fromFile(args(0)).getLines()) {
println(line)
}
I'd like the convienience of
for i, line in enumerate(open(sys.argv[1])):
print i, line
when doing the following in Scala
for (line <- Source.fromFile(args(0)).getLines()) {
println(line)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 Iterable 特征中的 zipWithIndex :
You can use the
zipWithIndex
from Iterable trait:正如其他人已经回答的那样,如果您希望索引从 0 开始,您可以使用 zipWithIndex :
因为如果在集合本身上调用 zipWithIndex ,则会创建集合的副本,您可能想将其调用到集合的
视图
:collection.view.zipWithIndex
。尽管如此,Python 的
enumerate
有一个可选参数来设置索引的起始值。在 scala 中,您可以这样做:要进行更长时间的讨论,请阅读 https://alvinalexander.com/scala/how-to-use-zipwithindex-create-for-loop-counters-scala-cookbook。
As already answered by others, if you want your index to start from 0, you can use
zipWithIndex
:Because
zipWithIndex
creates a copy of the collection if called on the collection itself, you may want to call it to aview
of the colleciton instead:collection.view.zipWithIndex
.Nonetheless, Python's
enumerate
has an optional parameter to set the start value of your index. In scala, you can do:For a longer discussion, read https://alvinalexander.com/scala/how-to-use-zipwithindex-create-for-loop-counters-scala-cookbook.