Причина: Причина заключается в том, что позиция занимает рисунок а не функцию. (т.е. позиция [-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, но это не хорошо, потому что это основанные на шаблоне функции и функции, основанные на функциях, явно отделенные друг от друга (помимо просмотра документации).
Надеюсь, что это поможет.
Этот вопрос http://stackoverflow.com/questions/5750623/using-position-correctly отвечает моей. – Richard
Но почему использование POSITION отличается от SELECT? – Richard
Выбор принимает в качестве аргумента функцию, тогда как позиция принимает в качестве аргумента шаблон. Шаблоны и функции, две разные парадигмы. –