Nếu bạn cần phải loại bỏ nó từ danh sách có sẵn, bạn có thể sử dụng
DeleteCases[list, Null]
hoặc
list /. Null -> Sequence[]
(cao hơn một chút).
Về Table
dụ bạn ở trên, lưu ý đầu tiên mà dấu phẩy thứ hai trong If
là không cần thiết (và thậm chí được nhấn mạnh trong màu hồng):
list = Table[If[i < 3, i], {i, 5}]
Để lọc các yếu tố bảng bằng một điều kiện, có lẽ bạn muốn sử dụng một cái gì đó tương tự như
list = Select[Table[i, {i, 5}], # < 3 &]
thay thế.
Cuối cùng, nếu bạn cần để tạo ra các danh sách mà không bao giờ thêm các yếu tố từ chối với nó (để tiết kiệm bộ nhớ), tôi đề nghị sử dụng Reap
và Sow
:
[email protected][If[i < 3, Sow[i]], {i, 5}]
list = %[[2, 1]]
tôi đã không thực sự xác nhận các sử dụng bộ nhớ của điều này so với một đồng bằng Table
, và lưu ý rằng nếu bạn tạo ra chỉ số, có thể được lưu trữ trong một packed array, xây dựng Table
có thể có nhiều bộ nhớ hiệu quả hơn. Mặt khác, nếu bạn tạo ra một số lượng lớn các biểu thức chung chung, phần lớn trong số đó sẽ bị từ chối trong If
, Sow
/Reap
có thể tốt hơn.
câu hỏi Hơi liên quan: http://stackoverflow.com/q/ 6313505/618728 –
Câu hỏi liên quan: http://mathematica.stackexchange.com/questions/3700/how-to-avoid-returning-a-null-if-there-is-no-else-condition-in-an-if -contruct – anderstood