Me gustaría dividir una lista en Qore así:
list a = (1,2,3,4,5,6);
list pieces = split_list_into_pieces(a, 2);
printf("%y\n", pieces);
Salida deseada:
[[1,2], [3,4], [5,6]]
Es decir, quiero tomar una lista (supuestamente larga) y dividirla en partes de la longitud dada (máxima).
Puedo hacerlo como:
list sub split_list_into_pieces(list a, int length)
{
int i = 0;
list ret = ();
list temp = ();
foreach any x in (a)
{
temp += x;
i++;
if (i == length)
{
push ret, temp;
temp = ();
i = 0;
}
}
if (temp)
{
push ret, temp;
}
return ret;
}
Pero no es muy elegante, ¿verdad?
¿Alguna mejor solución?
puedes hacerlo de esta manera:
list sub list_chunk(list a, int length) {
list result = ();
while (a)
push (result, extract (a, 0, length));
return result;
}
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras