Еще один способ в Mathematica 6 или новее.
В: = Flatten[ConstantArray @@@ a]
Out = {2, 3, 7, 11, 11, 13, 23, 23, 31, 41}
еще короче:
Join @@ ConstantArray @@@ a
Сравнение скорости опубликованных методов
Используя эти функции (в порядке их размещения):
zvrba = Flatten[Map[Table[#[[1]], {#[[2]]}] &, #]] &;
dreeves = Sequence @@ Table[#1, {#2}] & @@@ # &;
gdelfino = Flatten[# /. {p_, n_} :> Table[p, {n}]] &;
mrwizard = Join @@ ConstantArray @@@ # &;
sasha = Function[{p, e}, Array[p &, e, 1, Sequence]] @@@ # &;
и присвоение им букв Z, D, G, M, S соответственно, вот временные диаграммы их эффективности.
Во-первых, для увеличения количества списков на входе:
Во-вторых, для увеличения показателя (длины повторения) в каждом списке:
Обратите внимание, что эти диаграммы являются логарифмическими. Чем ниже, тем лучше.