【发布时间】:2019-08-14 01:42:03
【问题描述】:
在下面的代码sn-p中,我想避免在函数foo中使用str()。
import numpy as np
def foo(a):
for runner in range(a.shape[0]):
row = a[runner, :]
toPrint = str(runner) + ' '+ str(row)
print(toPrint)
myArray = np.array(np.arange(9).reshape(3,-1)).astype('float')
foo(myArray)
输出:
0 [0. 1. 2.]
1 [3. 4. 5.]
2 [6. 7. 8.]
背景:我使用 numba (https://numba.pydata.org/ ),其中 str() 在 numba 优化函数中的使用是不可能的。
如果不允许使用str(),foo 的代码应该是什么样子?即,不应发生任何导入(因为大多数时候 numba 不适用于它们)。
【问题讨论】:
-
我认为简单的答案是不要在该函数中打印。你能在调用函数中返回值并打印出来吗?
-
添加到@PaulRooney 的评论中,您正在循环打印,所以
yield可能会代替return工作。 -
也许您可以在打印之前将其附加到列表中?如果你真的想看的话。