( Mathematica версия: 8.0.4)
Учитывая
lst = {{{{1, 2}, 3}, {{4, 5}, 6}}, {{{7, 8, 9, 10, 11}, 13}}};
lst2 = DeleteCases[lst, {x_, y_} /; y > 6, {2}]
дает
{{{{1, 2}, 3}, {{4, 5}, 6}}, {}}
Обратите внимание на дополнительный пустой {}
в конце.
Я не смог найти способ удалить его в той же команде, используя DeleteCases
(что, я думаю, правильная команда для этого), поэтому мне пришлось применить его снова к результату
lst2 = DeleteCases[lst2, {}]
{{{{1, 2}, 3}, {{4, 5}, 6}}}
вопрос: есть ли уловка, чтобы выполнить вышеупомянутое в одной команде, не получая пустого {}
в результате?так что команда является самодостаточной для всех случаев?
updatet 1
ответ на предложение Лу ниже о добавлении дополнительного { }
Вот пример, где я получаю разные результаты:
lst={{{{1, 2}, 3}, {{4, 5}, 6}}, {{{7, 8, 9, 10, 11}, 13}}}
теперь, используя метод удаления пустых {}
дополнительным приложением DeleteCases
, мы получаем
lst2 = DeleteCases[lst, {x_, y_} /; y >= 6, {2}]
{{{{1, 2}, 3}}, {}}
lst2 = DeleteCases[lst2, {}]
{{{{1, 2}, 3}}}
теперь, используя метод экстра { }
lst2 = DeleteCases[lst, {{x_, y_}} /; y >= 6]
{{{{1, 2}, 3}, {{4, 5}, 6}}}
, что не то же самое, я должен получить только {{{{1, 2}, 3}}}
спасибо