2013-10-25 32 views
1

我擁有的任務非常簡單,但我無法在mathematica中解決它。 給出一個列表Mathematica滿足不等式的列表元素的位置

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

但是爲什麼與SELECT不同的POSITION的用法? – Richard

+1

Select將其作爲參數作爲函數,而Position則將其作爲參數作爲模式。模式和功能,兩種不同的範例。 –

回答

1

原因:原因是這個位置需要模式不是功能。 (即位置[-list - , - 圖案 - ])

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_ < - 是一個名爲「圖案對象」

X < - 是圖案對象的引用

更深層次的原因: 我不知道Mathematica的內部看起來完全像什麼,但我想它運行是這樣的:如果你使用的功能描述,而不是一個模式描述(而不是如#...... & x _ /; ...)該函數查找包含的模式「#... &」這是沒有意義的(因爲它比較不將它們饋送到您定義的函數的對象)。另一方面,當你使用模式描述時,它比較它們,然後檢查條件的真相(條件限制匹配,廣泛定義的x_匹配所有內容),並且你得到有意義的匹配。翻轉定義的功能與其他功能一起工作。

我喜歡Mathematica,但它不擅長使基於模式的函數和基於函數的函數顯然與彼此分離(除了查看文檔)。

希望有所幫助。

相關問題