我的任务非常简单,但我无法在mathematica中解决它。 给出一个列表
myList = {1, 3, 4}
我想得到条目的位置小于数字 - 在上面的例子中说2。 尝试如
Position[myList, #[[1]] < 2 &]
Position[myList, # < 2 &]
与函数SELECT
类似,不起作用。我如何使用Position
或其他一些功能。谢谢!
答案 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,但它并不擅长使基于模式的功能和基于功能的功能明显彼此分离(除了查看文档)。
希望有所帮助。