Выберите [вложенный_список, условие] в Mathematica

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

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-му элементу?
Также неплохо было бы привести пример с комбинацией элементов, например, когда сумма первых двух элементов подсписка меньше 0,5.


person enedene    schedule 25.10.2011    source источник
comment
Пожалуйста, проверьте ссылку на предыдущий вопрос.   -  person Dr. belisarius    schedule 25.10.2011


Ответы (1)


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

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

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

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

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

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

or

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

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

person Szabolcs    schedule 25.10.2011