作为Mathematica的用户,我喜欢自动“在列表上执行线程”的函数(Mathematica的人称之为-seehttp://reference.wolfram.com/mathematica/ref/Listable.html)。这意味着如果给一个函数一个列表而不是一个值,它会自动使用每个列表项作为参数并返回结果列表
myfunc([1,2,3,4]) -> [myfunc(1),myfunc(2),myfunc(3),myfunc(4)]
我在Python中实现了这样的原则:
^{pr2}$这是个好办法吗?你能想到这个实施或整个策略的缺点吗?在
如果这是在很多函数中都要做的事情,那么可以使用Python decorator。这里有一个简单但有用的方法。在
这样,只需在函数前面添加
^{pr2}$@threads_over_lists
行,就可以使它这样运行。例如:您还应该考虑是希望它只对列表进行矢量化,还是对其他iterable对象(如元组和生成器)进行矢量化。This是一个有用的StackOverflow问题,用于确定这一点。但是要小心-字符串是iterable的,但您可能不希望函数对其中的每个字符进行操作。在
这是个好办法。 但是,您必须为您编写的每个函数执行此操作。 为了避免这种情况,您可以使用decorator这样的一个:
相关问题 更多 >
编程相关推荐