以下是我正在阅读的文本文件中的条目的简化示例 -
Set1 1 2 3
Set2 6 7 8
我正在尝试编写一个可以将上述字符串转换为元组列表的函数 -
[("Set1", [1.0, 2.0, 3.0]), ("Set2", [6.0, 7.0, 8.0])]
这是我写的功能 -
parse_input :: String -> [(String, [Float])]
parse_input x = [ (head y, int2float (tail y)) | y <- splitinput ]
where
int2float x = [ read a::Float | a <- x ]
splitinput = [ words a | a <- lines x ]
最令我困扰的是这个代码是int2float部分。它梳理整数列表,并逐个将每个整数转换为浮点数。
是否有更有效的方法将整数列表转换为浮点数列表?
答案 0 :(得分:3)
我不清楚你对这种情况的“有效方法”是什么意思?
您要做的是将[String]
转换为[Float]
。我认为使用read
会很好。如果您确实拥有[Int]
,则可以使用fromIntegral
获取Num
类型的任何实例。只是为了指出你应该更喜欢map
而不是列表理解,因为它更具可读性。