2013-10-25 3 views
1

Задача, которую я имею, довольно проста, но я не могу ее решить в математике. Учитывая списокМатематическое положение элементов списка, которые удовлетворяют неравенству

myList = {1, 3, 4}

Я хотел бы получить позицию записей меньше, чем число - скажем, 2 в приведенном выше примере. Попытки таких как

Position[myList, #[[1]] < 2 &]

Position[myList, # < 2 &]

которая будет аналогична функции SELECT не работают. Как я могу использовать Position или какую-то другую функцию. Благодаря!

+1

Этот вопрос http://stackoverflow.com/questions/5750623/using-position-correctly отвечает моей. – Richard

+0

Но почему использование POSITION отличается от SELECT? – Richard

+1

Выбор принимает в качестве аргумента функцию, тогда как позиция принимает в качестве аргумента шаблон. Шаблоны и функции, две разные парадигмы. –

ответ

1

Причина: Причина заключается в том, что позиция занимает рисунок а не функцию. (т.е. позиция [-list -, - pattern-])

Решение:

Position[myList, x_ /; x < 2] 
{{1}} 

Аналогично:

myList2 = {1, 2, 3, 4, 5, 1, "notNumber"} 
Position[myList2, x_ /; x < 3] 
{{1}, {2}, {6}} 

(т.е. позиция [MyList, element_x где element_x < 2])

/; < - обозначает условие (супер полезно при определении функций более конкретных входов тоже!)

< x_ - это название «модель объекта»

< х - это ссылка на объект шаблона

Deeper Причина: Я не знаю точно, что внутренности Mathematica выглядеть, но я предполагаю, что это работает что-то вроде этого: если вы используете функциональное описание вместо описания шаблона (то есть # ... & вместо x _ /; ...) функция ищет шаблоны, которые содержат «# ... &», который не имеет смысла (поскольку он сравнивает объекты, не подающие их на определенную функцию). С другой стороны, когда вы используете описание шаблона, оно сравнивает их, затем проверяет условность на истину (условные ограничивающие совпадения, широко определенное x_ соответствующее всем) и вы получаете значимое соответствие. Переверните все, что для функций, определенных для работы с другими функциями.

Я люблю Mathematica, но это не хорошо, потому что это основанные на шаблоне функции и функции, основанные на функциях, явно отделенные друг от друга (помимо просмотра документации).

Надеюсь, что это поможет.

Смежные вопросы