Jeżeli trzeba go usunąć z istniejącej listy, można użyć
DeleteCases[list, Null]
lub
list /. Null -> Sequence[]
(nieco bardziej zaawansowany).
dotycząceTwojego przykład Table
powyżej pierwszej nuty, że drugi przecinek w If
jest konieczne (a nawet będzie podświetlone na różowo):
list = Table[If[i < 3, i], {i, 5}]
do filtrowania elementów tabeli przez warunek, to polubisz zamiast tego chcesz użyć czegoś podobnego do podobnego do tego, co podobnego do
list = Select[Table[i, {i, 5}], # < 3 &]
.
Wreszcie, jeśli trzeba wygenerować listę bez kiedykolwiek dodawanie elementów odrzuconych do niego (aby zaoszczędzić pamięć), proponuję przy użyciu Reap
i Sow
:
[email protected][If[i < 3, Sow[i]], {i, 5}]
list = %[[2, 1]]
nie zostały faktycznie zweryfikowane wykorzystanie pamięci tego w porównaniu do zwykłego Table
, i zauważ, że jeśli generujesz tylko liczby, które mogą być przechowywane w packed array, konstrukcja Table
może być bardziej wydajna pod względem pamięci. Z drugiej strony, jeśli wygenerujesz naprawdę ogromną liczbę ogólnych wyrażeń, z których większość zostanie odrzucona w If
, Sow
/może być lepsza.
Nieco pokrewne pytanie: http://stackoverflow.com/q/ 6313505/618728 –
Powiązane pytanie: http://mathematica.stackexchange.com/questions/3700/how-to-avoid-returning-a-null-if-there-is-no-else-condition-in-an-if -contruct – anderstood