Existe-t-il un moyen rapide de convertir une liste à plat en une liste de deux-tuples telle qu'une liste plate comme [1,2,3,4,5,6] devient [{1,2}, {3,4 }, {5,6}]?Meilleur moyen de convertir une liste à un ensemble de deux-tuples dans Erlang?
Cela fonctionne, mais il se sent tout simplement faux:
tuples_from_flat_list(Target) ->
TargetWithIndex = lists:zip(lists:seq(1, length(Target)), Target),
{K, V} = lists:partition(fun({I, _}) -> I rem 2 == 1 end, TargetWithIndex),
lists:zipwith(fun({_, X}, {_, Y}) -> {X, Y} end, K, V).
Oui, l'inversion et le préfixage sont toujours plus efficaces. Mais je pense que l'approche "straight" fonctionne bien comme la leçon 1, suivie rapidement par le reverse/prefix comme leçon 2 ...! –
Pourquoi vous comptez la longueur de la liste lorsque vous ne faites pas d'erreur plus sensible msg. Votre reverse/2 déclenchera le même message d'erreur que votre reverse/1. C'est un travail inutile et le ralentir un peu. –
@Hynek: Je pense que c'est mieux parce que ça échoue plus tôt. En outre, il ajoute de la clarté pour celui qui va lire le code – zakovyrya