如何解决解析文件中每一行的 Julia 迭代器
我是 Julia 的新手,并且遇到了一些我认为应该是常见情况的事情:
我想要一个迭代器,一次解析一个文本文件。所以,就像 eachline(f)
一样,除了函数 parse
应用于每一行。如果您愿意,可以调用结果 eachline(parse,f)
(例如带有额外函数参数的 open
版本):将 parse
映射到 eachline
。
更具体地说:我有一个函数 poset(s::String)
将一个偏序集的字符串表示转换为一个偏序集:
function poset(s::String)
nums = split(s)
...
return transitiveclosure(g)
end
现在我想说一些类似的话
open("posets7.txt") do f
for p in eachline(poset,f)
#something
end
end
(我特别需要它作为迭代器:我的文件相当大,所以我真的想一次解析它们)。
解决方法
我想我会(个人)在这种情况下使用 Iterators.map
:
open("posets7.txt") do f
for p in Iterators.map(poset,eachline(f))
# do something
end
end
但是,正如文档所述(以及您自己发现的),这等效于使用 generator expression:
open("posets7.txt") do f
for p in (poset(x) for x in eachline(f))
# do something
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。