Если вам нужно удалить его из существующего списка, вы можете использовать
DeleteCases[list, Null]
или
list /. Null -> Sequence[]
(немного более продвинутый).
Относительно вашего Table
примера выше, сначала обратите внимание, что вторая запятая в If
не нужна (и даже выделена розовым цветом):
list = Table[If[i < 3, i], {i, 5}]
Чтобы отфильтровать элементы таблицы по условию, выВозможно, вы захотите использовать что-то похожее на
list = Select[Table[i, {i, 5}], # < 3 &]
.
Наконец, если вам нужно сгенерировать список, не добавляя в него отклоненные элементы (для экономии памяти), япредложите использовать Reap
и Sow
:
Reap@Do[If[i < 3, Sow[i]], {i, 5}]
list = %[[2, 1]]
Я фактически не проверял использование памяти по сравнению с обычным Table
, и учтите, что если вы генерируете только числа, которые могут бытьхранящаяся в упакованном массиве , конструкция Table
может быть более эффективной с точки зрения памяти.С другой стороны, если вы генерируете действительно огромное количество обобщенных выражений, большинство из которых будут отклонены в If
, Sow
/ Reap
может быть лучше.