Python เป็นหนึ่งในภาษาที่ต้องการในหมู่นักเขียนโค้ดสำหรับความท้าทายด้านการเขียนโปรแกรมการแข่งขันส่วนใหญ่ ปัญหาส่วนใหญ่คำนวณได้ง่ายในกรอบเวลาที่เหมาะสมโดยใช้ python
สำหรับปัญหาที่ซับซ้อนบางอย่าง การเขียนโค้ดหลามที่เร็วพอมักจะเป็นเรื่องที่ท้าทาย ด้านล่างนี้คือโครงสร้างของโค้ด pythonic ที่ช่วยปรับปรุงประสิทธิภาพของโค้ดของคุณในการเขียนโค้ดที่แข่งขันได้ -
1. การต่อสายอักขระ :อย่าใช้โครงสร้างด้านล่าง
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] for x in some_list: str1 += x print(str1)
วิธีข้างต้นให้เวลามาก ลองใช้วิธีนี้ (วิธีเข้าร่วม) แทน -
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] print(str1.join(some_list))
2. ฟังก์ชันแผนที่
โดยทั่วไปแล้ว คุณมีข้อมูลในการเขียนโค้ดที่แข่งขันได้ อย่างเช่น −
1234567
เพื่อให้ได้มาเป็นรายการตัวเลขง่ายๆ
list(map (int, input().split()))
ใช้ฟังก์ชันอินพุต () เสมอโดยไม่คำนึงถึงประเภทของอินพุต จากนั้นแปลงโดยใช้ฟังก์ชันแผนที่
>>> list(map(int, input("enter numbers:").split())) enter numbers:1 2 3 4 5 6 7 [1, 2, 3, 4, 5, 6, 7] >>>
ฟังก์ชั่นแผนที่เป็นหนึ่งในฟังก์ชั่นที่สวยงามในตัวของ python ซึ่งมีประโยชน์หลายครั้ง น่ารู้.
3. โมดูลคอลเลกชัน
ในกรณีที่เราต้องการลบรายการที่ซ้ำกันออกจากรายการ ในขณะที่ในภาษาอื่น ๆ เช่น Java คุณอาจต้องใช้ HashMap หรือวิธีอื่น ๆ อย่างไรก็ตามใน pytho นั้นง่ายมาก
>>> print(list(set([1,2,3,4,3,4,5,6]))) [1, 2, 3, 4, 5, 6]
นอกจากนี้ ระมัดระวังในการใช้ expand() และ append() ในรายการ ในขณะที่รวมสองรายการขึ้นไป
>>> a = [1, 2, 3,4] # list 1 >>> b = [5, 6, 7] # list 2 >>> a.extend(b)#gives one list >>> a [1, 2, 3, 4, 5, 6, 7] >>> a.append(b) # gives list of list >>> a [1, 2, 3, 4, [5, 6, 7]]
4. โครงสร้างภาษา
การเขียนโค้ดในฟังก์ชันจะดีกว่า ถึงแม้ว่า Python จะรองรับโค้ดขั้นตอน
def main(): for i in range(2**3): print(x) main()
ดีกว่ามาก
for x in range(2**3): print(x)
การจัดเก็บตัวแปรในเครื่องนั้นเร็วกว่า globals เนื่องจากการใช้งาน Cpython พื้นฐาน
5. ใช้ไลบรารีมาตรฐาน:
ควรใช้ฟังก์ชันในตัวและแพ็คเกจไลบรารีมาตรฐานให้มากที่สุดเท่าที่จะเป็นไปได้ ที่นั่น แทนที่จะเป็น −
newlist = [] for x in somelist: newlist.append(myfunc(x))
ใช้สิ่งนี้ -
newlist = map(myfunc, somelist)
ในทำนองเดียวกัน ลองใช้ itertools (ไลบรารีมาตรฐาน) เนื่องจากจะเร็วกว่ามากสำหรับงานทั่วไป ตัวอย่างเช่น คุณสามารถมีบางอย่างเช่น การเรียงสับเปลี่ยนสำหรับลูปด้วยโค้ดสองสามบรรทัด
>>> import itertools >>> iter = itertools.permutations(["a","b","c"]) >>> list(iter) [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
6. เครื่องกำเนิดไฟฟ้า
ตัวสร้างเป็นโครงสร้างที่ยอดเยี่ยมในการลดทั้งรอยเท้าของหน่วยความจำและความซับซ้อนของเวลาโดยเฉลี่ยของโค้ดที่คุณเขียน
def fib(): a, b = 0, 1 while 1: yield a a, b = b, a+b