นี่เป็นคำถามที่ค่อนข้างเป็นแนวคิด แต่ฉันหวังว่าฉันจะได้รับคำแนะนำที่ดีเกี่ยวกับเรื่องนี้ การเขียนโปรแกรมจำนวนมากที่ฉันทำคือกับอาร์เรย์( NumPy ); ฉันมักจะต้องจับคู่รายการในสองอาร์เรย์ขึ้นไปที่มีขนาดแตกต่างกันและสิ่งแรกที่ฉันไปคือ for-loop หรือแย่กว่านั้นเป็นซ้อนสำหรับ for-loop ฉันต้องการหลีกเลี่ยงการวนซ้ำมากที่สุดเพราะมันช้า (อย่างน้อยใน 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 ในตัวอย่างของคุณคุณกำลังทำงานพิเศษ คุณสามารถทำได้ด้วยหนึ่งวงแทนสอง