这是一个相当概念性的问题,但是我希望我能对此得到一些好的建议。我做的很多编程工作都是使用(NumPy)数组。我经常必须匹配大小不同的两个或多个数组中的项,而我要去的第一件事是一个for循环,甚至更糟的是嵌套的for循环。我想尽可能避免for循环,因为它们很慢(至少在Python中如此)。
我知道NumPy的很多功能都需要我研究一些预定义的命令,但是当您必须迭代某些内容时,您(作为经验丰富的程序员)是否会想到一个一般的思考过程?
所以我经常有这样的事情,这很糟糕,我想避免它:
small_array = np.array(["one", "two"])
big_array = np.array(["one", "two", "three", "one"])
for i in range(len(small_array)):
for p in range(len(big_array)):
if small_array[i] == big_array[p]:
print "This item is matched: ", small_array[i]
我知道有多种方法可以实现这一目标,但是我对通用的思维方法(如果存在)感兴趣。
I want to avoid for-loops as much as possible because they are slow (at least in Python).
听起来您在这里解决了错误的问题。如果需要迭代某些事物,则需要迭代某些事物。无论您使用哪种Python构造,都会对性能产生类似的影响。如果您的代码很慢,那不是因为您有for
循环。这是因为您在做不必要的工作,或者在Python方面可以在C方面完成。在您的示例中,您正在做额外的工作;您可以用一个循环而不是两个循环来完成。