Возможно ли оставить в списке все элементы большие k

Форум пользователей пакета Mathematica

Модератор: Admin

Василий1001
Сообщения: 3
Зарегистрирован: Вт май 21, 2013 4:58 pm

Возможно ли оставить в списке все элементы большие k

Сообщение Василий1001 » Вт май 21, 2013 5:06 pm

Возможно ли оставить в списке все элементы большие (меньшие, большие или равные) заданного значения k?
Каким образом это реализовать?[/b]

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Вт май 21, 2013 6:13 pm

Ниже приведен исходник функции для вычисления элементов списка l, больших k, с примером.

In[2066]:= Elements[l_List, k_] := Select[l, # >= k &]

In[2067]:= {p, a} = {1, {}}; While[p < 30,
AppendTo[a, RandomInteger[{5, 100}]]; p++]; a

Out[2067]= {72, 22, 67, 14, 100, 63, 97, 10, 21, 15, 12, 36, 69, 44, 52, 41, 74, 38, 91, 43, 32, 73, 15, 67, 18, 29, 31, 27, 70}

In[2068]:= Elements[a, 30]

Out[2068]= {72, 67, 100, 63, 97, 36, 69, 44, 52, 41, 74, 38, 91, 43, 32, 73, 67, 31, 70}

Несложно расширить данную функцию и на более общие случаи. Дерзайте. Успехов.

Vasiliev
Сообщения: 5
Зарегистрирован: Ср сен 05, 2012 10:41 am

Сообщение Vasiliev » Ср май 22, 2013 11:06 am

Привожу обобщение функции Selin'a на случай, когда в качестве параметра F используются Equal, Greater, GreaterEqual, Less, LessEqual и др. функции от 2 параметров.

In[2030]:= Elements[l_List, k_, F_Symbol] := Select[l, F[#, k] &]

In[2031]:= Elements[{56, 34, 23, 78, 56, 95, 23, 11, 21}, 50, Greater]

Out[2031]= {56, 78, 56, 95}

Василий1001
Сообщения: 3
Зарегистрирован: Вт май 21, 2013 4:58 pm

Сообщение Василий1001 » Ср май 22, 2013 4:34 pm

Selin писал(а):Несложно расширить данную функцию и на более общие случаи. Дерзайте. Успехов.


Благодарю!
Буду осваивать.

Василий1001
Сообщения: 3
Зарегистрирован: Вт май 21, 2013 4:58 pm

Сообщение Василий1001 » Чт май 23, 2013 5:04 pm

Selin писал(а):Ниже приведен исходник функции для вычисления элементов списка l, больших k, с примером.

In[2066]:= Elements[l_List, k_] := Select[l, # >= k &]

In[2067]:= {p, a} = {1, {}}; While[p < 30,
AppendTo[a, RandomInteger[{5, 100}]]; p++]; a

Out[2067]= {72, 22, 67, 14, 100, 63, 97, 10, 21, 15, 12, 36, 69, 44, 52, 41, 74, 38, 91, 43, 32, 73, 15, 67, 18, 29, 31, 27, 70}

In[2068]:= Elements[a, 30]

Out[2068]= {72, 67, 100, 63, 97, 36, 69, 44, 52, 41, 74, 38, 91, 43, 32, 73, 67, 31, 70}

Несложно расширить данную функцию и на более общие случаи. Дерзайте. Успехов.


Получилось!
Благодарю.

Скажите, а так будет проще?
In[13]:=
w={1,а,2,b,3,4,c}
Select[w,#<=2&]

Out[13]=
{1,а,2,b,3,4,c}

Out[14]=
{1,2}

Selin
Сообщения: 43
Зарегистрирован: Чт апр 14, 2011 11:14 am

Сообщение Selin » Пт май 24, 2013 10:28 am

Проще, но для частного случая. Вам же дано решение для общего случая.