Выберите [nested_list, условие] в Mathematica - PullRequest
2 голосов
/ 25 октября 2011

Допустим, у меня есть список:

list=Table[{RandomReal[],RandomReal[],RandomReal[]}, {i,1,100}];

Я хотел бы создать новый список на основе условий.Теперь я понял, что должен использовать функцию Select, но я не понимаю, как определить условие, при котором выбор должен основываться на каком-либо элементе вложенного списка.
Кто-то задал похожий вопрос , и мне понравился ответ:

data = {{0,2},{2,3},{4,3},{5,4},{8,4}};
filtered = Select[data, First[#]>3&];

Однако это работает, только если условие установлено для первого элемента подсписка.В моем случае:

Select[list,0.2>First[#]>0.1&]

дает всех членов списка, где 1. элемент подсписка находится в диапазоне от 0,1 до 0,2.Но что, если я хотел бы сделать выбор на основе второго элемента подсписка или вообще для n-го элемента?
Также был бы хорош пример с комбинацией элементов, например, где сумма первых 2 элементов подсписка меньше 0,5.

1 Ответ

13 голосов
/ 25 октября 2011

Во-первых, создание списка проще:

list = RandomReal[1, {100, 3}];

Вы можете использовать Part (см. Документы !!) , что эквивалентно синтаксису [[ ]], чтобы взять n й элемент.Например, это выбирает те элементы, у которых второй элемент больше 0,1.

Select[list, #[[2]] > 0.1 &]

В качестве альтернативы используйте

Cases[list, l_ /; l[[2]] > 0.1]

или

Cases[list, {_, y_, _} /; y > 0.1]

Я рекомендую изучить учебные пособияв документации, особенно в части о манипулировании списком .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...