Computer >> Máy Tính >  >> Lập trình >> Python

Thủ thuật Python để Mã hóa Cạnh tranh

Python là một trong những ngôn ngữ ưa thích của các lập trình viên đối với hầu hết các thách thức lập trình cạnh tranh. Hầu hết các vấn đề đều có thể dễ dàng tính toán trong một khung thời gian hợp lý bằng cách sử dụng python.

Đối với một số vấn đề phức tạp, viết mã python đủ nhanh thường là một thách thức. Dưới đây là một số cấu trúc mã pythonic giúp cải thiện hiệu suất mã của bạn trong mã hóa cạnh tranh -

1. Nối chuỗi :Không sử dụng cấu trúc bên dưới.

str1 = ""
some_list = ["Welcome ", "To ", "Tutorialspoint "]
for x in some_list:
   str1 += x
print(str1)

Phương pháp trên cung cấp chi phí thời gian rất lớn. Thay vào đó, hãy thử sử dụng phương pháp này (phương thức nối) -

str1 = ""
some_list = ["Welcome ", "To ", "Tutorialspoint "]
print(str1.join(some_list))

2. Chức năng Bản đồ

Nói chung, bạn có một đầu vào trong mã hóa cạnh tranh, giống như -

1234567

Để lấy chúng dưới dạng danh sách các số, chỉ cần

list(map (int, input().split()))

Luôn sử dụng hàm input () bất kể loại đầu vào nào và sau đó chuyển đổi nó bằng cách sử dụng hàm bản đồ.

>>> list(map(int, input("enter numbers:").split()))
enter numbers:1 2 3 4 5 6 7
[1, 2, 3, 4, 5, 6, 7]
>>>

Chức năng bản đồ là một trong những chức năng đẹp mắt được tích hợp sẵn của python, rất tiện dụng. Đáng biết.

3. Mô-đun bộ sưu tập

Trong trường hợp chúng tôi muốn xóa các bản sao khỏi danh sách. Trong khi ở các ngôn ngữ khác như Java, bạn có thể phải sử dụng HashMap hoặc bất kỳ cách kỳ lạ nào khác, tuy nhiên, trong pytho thì nó chỉ đơn giản là

>>> print(list(set([1,2,3,4,3,4,5,6])))
[1, 2, 3, 4, 5, 6]

Ngoài ra, hãy cẩn thận sử dụng extension () và append () trong danh sách khi hợp nhất hai hoặc nhiều danh sách.

>>> 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. Cấu trúc ngôn ngữ

Tốt hơn là viết mã của bạn trong các hàm, mặc dù mã thủ tục được hỗ trợ bằng Python.

def main():
   for i in range(2**3):
      print(x)
main()

tốt hơn nhiều so với

for x in range(2**3):
   print(x)

Lưu trữ các biến cục bộ nhanh hơn so với toàn cầu do triển khai Cpython cơ bản.

5. Sử dụng thư viện chuẩn:

Tốt hơn hết là bạn nên sử dụng các hàm tích hợp sẵn và gói thư viện tiêu chuẩn càng nhiều càng tốt. Ở đó, thay vì -

newlist = []
for x in somelist:
   newlist.append(myfunc(x))

Sử dụng cái này -

newlist = map(myfunc, somelist)

Tương tự như vậy, hãy thử sử dụng itertools (thư viện chuẩn), vì chúng nhanh hơn nhiều cho một tác vụ thông thường. Ví dụ:bạn có thể có một cái gì đó như hoán vị cho một vòng lặp với một vài dòng mã.

>>> 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. Máy phát điện

Trình tạo là cấu trúc tuyệt vời để giảm cả dung lượng bộ nhớ và độ phức tạp thời gian trung bình của mã bạn đã viết.

def fib():
   a, b = 0, 1
   while 1:
      yield a
      a, b = b, a+b