Flatten a list: Difference between revisions
Content added Content deleted
(→Python: Added a variant illustrating non-recursive use of concatMap, avoiding mutation and error-based flow) |
|||
Line 2,098: | Line 2,098: | ||
flattenList(nestList, flatList) |
flattenList(nestList, flatList) |
||
println("Flattened : " + flatList) |
println("Flattened : " + flatList) |
||
}</lang> |
|||
Or, using a more functional approach: |
|||
<lang scala> |
|||
fun flatten(list: List<*>): List<*> { |
|||
fun flattenElement(elem: Any?): Iterable<*> { |
|||
return if (elem is List<*>) |
|||
if (elem.isEmpty()) elem |
|||
else flattenElement(elem.first()) + flattenElement(elem.drop(1)) |
|||
else listOf(elem) |
|||
} |
|||
return list.flatMap { elem -> flattenElement(elem) } |
|||
}</lang> |
}</lang> |
||