Mathematica满足不等式的列表元素的位置

时间:2013-10-25 14:27:50

标签: position wolfram-mathematica

我的任务非常简单,但我无法在mathematica中解决它。 给出一个列表

myList = {1, 3, 4}

我想得到条目的位置小于数字 - 在上面的例子中说2。 尝试如

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

Position[myList, # < 2 &]

与函数SELECT类似,不起作用。我如何使用Position或其他一些功能。谢谢!

1 个答案:

答案 0 :(得分:1)

原因:原因是Position采用模式而不是功能。 (即职位[-list - , - pattern - ])

<强>解决方案

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

类似地:

{{1}}

(即Position [myList,element_x where element_x&lt; 2])

/; &lt; - 表示条件(在特定输入上定义函数时非常有用!)

x_&lt; - 是一个名为“模式对象”

x&lt; - 是对模式对象的引用

更深层次的原因: 我不确切知道Mathematica内部的外观是什么,但我想它运行的是这样的:如果你使用功能描述而不是模式描述(即#...&amp;而不是x _ /; ...)该函数查找包含“#...&amp;”的模式这是没有意义的(因为它正在比较没有将它们提供给你定义的函数的对象)。另一方面,当您使用模式描述时,它会对它们进行比较,然后检查条件是否为真(条件限制匹配,广泛定义的x_匹配所有内容)并获得有意义的匹配。翻转所有定义为与其他功能一起使用的函数。

我喜欢Mathematica,但它并不擅长使基于模式的功能和基于功能的功能明显彼此分离(除了查看文档)。

希望有所帮助。