1

私が持っているタスクは非常に単純ですが、mathematica では解決できません。与えられたリスト

myList = {1, 3, 4}

上記の例では、数値よりも小さいエントリの位置を取得したいと思います。たとえば、2 です。などの試み

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

Position[myList, # < 2 &]

SELECTこれは、機能しないに似ています。どのように使用できますPositionか、または他の機能。ありがとう!

4

1 に答える 1

2

理由: 理由は、Position が関数ではなくパターンを取るためです。(つまり、Position[-list-,-pattern-])

解決策:

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

同様に:

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

(つまり、Position[ myList, element_x where element_x < 2])

/; <-- は条件を表します (特定の入力に対して関数を定義する場合にも非常に便利です!)

x_ <-- は名前付きの「パターン オブジェクト」です

x <-- はパターン オブジェクトへの参照です

より深い理由: Mathematica の内部がどのように見えるか正確にはわかりませんが、次のように実行されると思います: パターン記述の代わりに機能記述を使用すると (つまり、x_/; の代わりに #...& .. .) 関数は意味をなさない "#...&" を含むパターンを探します (定義された関数にそれらを供給しないオブジェクトを比較しているため)。一方、パターン記述を使用すると、それらが比較され、条件が真であるかどうかがチェックされ (条件付きの制限が一致し、広く定義された x_ がすべてに一致します)、意味のある一致が得られます。他の関数で動作するように定義された関数のすべてを反転します。

私は Mathematica が大好きですが、パターンベースの関数と関数ベースの関数を互いに明確に分離するのは得意ではありません (ドキュメントを見ることは別として)。

それが役立つことを願っています。

于 2013-10-26T20:20:24.167 に答える