C ++ là một ngôn ngữ tuyệt vời để lập trình cạnh tranh vì tốc độ nhanh, quản lý bộ nhớ, con trỏ, v.v. Hơn nữa, C ++ có STL [Thư viện tạm thời tiêu chuẩn] có một bộ sưu tập lớn các cấu trúc dữ liệu và thuật toán và làm cho nhiều thuật toán dễ viết mã hơn. Python là ngôn ngữ kịch bản, mặc dù bạn có thể sử dụng nó cho CP [do các thư viện trừu tượng của nó]. Nhưng python không được phép tham gia nhiều cuộc thi CP như IOI. Tôi khuyên bạn chỉ nên chuyển sang C++ ngay từ đầu vì sau này bạn sẽ cảm thấy thoải mái. Trải nghiệm của tôi với c ++ thật tuyệt
Trong khi lập trình cạnh tranh, bộ nhớ và thời gian là hai hạn chế chính. Nếu bạn muốn theo dõi việc sử dụng bộ nhớ, bạn có thể sử dụng đoạn mã sau
Đoạn mã
import sys
dic = {'a': 3, 'b': 2, 'c': 1, 'd': 1}
print[sys.getsizeof[dic]]
đầu ra
240
2. Sử dụng Chức năng Bản đồĐầu vào loại danh sách một dòng thường được thấy trong lập trình cạnh tranh. Đây là một dòng mã Python có thể giúp bạn nhập kiểu danh sách
Đoạn mã
input_list=list[map[int, input["enter numbers: "].split[]]]enter numbers: 1 2 3 4 5 6 7 8
đầu ra
[1, 2, 3, 4, 5, 6, 7, 8]
3. Sắp xếp danh sách các bộ dữ liệu theo bất kỳ chỉ mục nào của giá trị bộ dữ liệuGiả sử bạn có một danh sách với một tập hợp các bộ dữ liệu và bạn muốn sắp xếp danh sách dựa trên bất kỳ phần tử chỉ mục nào của bộ dữ liệu. Trong ví dụ dưới đây, chúng tôi đang sắp xếp một danh sách các bộ dữ liệu dựa trên phần tử thứ ba của mỗi bộ dữ liệu
Đoạn mã
val = [['first', 3, 9], ['second', 4, 6], ['third', 2, 3]]
val.sort[key = lambda x: x[2], reverse=False]
print[val]
đầu ra
[['third', 2, 3], ['second', 4, 6], ['first', 3, 9]]
4. Sử dụng khôn ngoan việc hiểu từ điển PythonChúng tôi thậm chí có thể chuyển đổi đầu ra của việc hiểu danh sách thành từ điển Python. Sử dụng dòng mã Python bên dưới có thể giúp bạn đạt được kết quả tương tự
Đoạn mã
dic = [[str[i]+" element", i*2] for i in range[5]]
print[dict[dic]]
đầu ra
{'0 element': 0, '1 element': 2, '2 element': 4, '3 element': 6, '4 element': 8}
5. Công dụng kỳ diệu của chức năng lọcHàm bộ lọc có thể giúp bạn loại bỏ các phần tử không mong muốn trong danh sách dựa trên bất kỳ điều kiện nào được xác định trong hàm lambda
Đoạn mã
________số 8_______đầu ra
[1, 3, 5, 7, 9, 11, 13]
6. Nhận chuỗi hoán vị của bạnChúng ta có thể sử dụng thư viện
240
8 trong Python để nhận hoán vị chuỗiĐoạn mã
240
0đầu ra
240
17. Chuyển đổi danh sách của bạn thành một chuỗi đơnHàm
240
9 trong Python có thể giúp chúng ta nối các phần tử của danh sách bằng bất kỳ dấu phân cách nào. Chúng ta có thể định nghĩa dấu phân cách bên trong “ ”Đoạn mã
240
2đầu ra
240
38. Kiểm tra đảo ngữĐây là một cách đơn giản nhưng hiệu quả để kiểm tra bất kỳ đảo chữ cái nào
Đoạn mã
240
4đầu ra
240
59. Sử dụng hoàn hảo các toán tử so sánhThay vì sử dụng điều kiện if-else, bạn có thể sử dụng nó để có chất lượng mã tốt hơn
Đoạn mã
240
6đầu ra
240
710. Kiểm tra độ phức tạp của thời gianTrước khi viết mã, bạn nên nghĩ về độ phức tạp về thời gian của bất kỳ hoạt động nào mà bạn sẽ thực hiện. Đây là một mánh gian lận từ wiki Python thể hiện độ phức tạp về thời gian của các phím tắt Python khác nhau
Luôn sử dụng hàm raw_input[]
bất kể loại đầu vào và sau đó chuyển đổi nó bằng hàm bản đồ. chức năng bản đồ là một trong những chức năng đẹp nhất trong python. Đáng để biết
tráo đổi
a, b = b, a
thao tác cắt lát
- X[. N] — tất cả các phần tử bên dưới chỉ số N
- X[N. ] — tất cả các phần tử trên chỉ số N
- X[a. b] — tất cả các phần tử giữa a, b
- Và hãy nhớ danh sách python là hình tròn
- X[-k] cho phần tử thứ k từ phần tử cuối cùng. Cũng khá hữu ích để sử dụng trong việc cắt lát
- X[-k. ] — cung cấp k phần tử cuối cùng
- X[. -k] — cung cấp n-k phần tử đầu tiên trong đó n là độ dài của danh sách
- Chúng còn nhiều nữa. Các tính năng gọn gàng trong Python. Cắt và Trượt [Bước] và Cắt, Cắt và Nối
Trong khi lặp đi lặp lại luôn sử dụng xrange[]
và không bao giờ range[]
Đây là một sai lầm phổ biến mà hầu hết người mới bắt đầu mắc phải. range[]
đưa ra một danh sách quá mức cần thiết. xrange[]
là một trình tạo, tạo ra từng phần tử một và chỉ một lần. Mặc dù nếu bạn đang sử dụng Python3 thì việc sử dụng range
là an toàn
Hàm sort[]
mô-đun bộ sưu tập
Rất thường xuyên, bạn cần loại bỏ các bản sao. Trong khi ở các ngôn ngữ như java, bạn phải sử dụng HashMap và tất cả những thứ đó, thì ở python, nó chỉ đơn giản là
_list = list[set[_list]]
Sự khác biệt giữa raw_input[]
0 và raw_input[]
1 trong danh sách
hợp nhất a=[1, 2, 3] và b=[4, 5, 6] phải làraw_input[]
2
cái nào mang lại
[1, 2, 3, 4, 5, 6]
raw_input[]
3
cho
[1, 2, 3, [4, 5, 6]]
nối chuỗi
raw_input[]
4
Để nối các chuỗi trên, chúng tôi muốn làm
Nó đưa ra câu trả lời đúng nhưng đó là cách tồi tệ nhất để làm điều đó và tốn rất nhiều thời gian. Cách chính xác là sử dụng chức năng raw_input[]
5
Ngừng sử dụng các chức năng rút gọn trong python nếu bạn đang. Chúng không được hỗ trợ tốt và sẽ sớm bị phản đối. Số phận của reduce[] trong Python 3000 từ chính người phát minh ra python. Bắt đầu sử dụng rộng rãi lambda. Xem bài đăng này Python Lambda - tại sao?
Và danh sách cứ lặp đi lặp lại
hãy xem cuốn sách này Viết cuốn sách Python thành ngữ
Tôi chắc rằng bạn có thể lấy một bản pdf ở đâu đó
Cuối cùng, thực hành. HackerRank là tốt nhất cho người mới bắt đầu và đặc biệt nếu bạn là người yêu thích trăn, bạn sẽ thấy thực sự thoải mái
Đoạn trên là một câu trả lời tôi đã viết trên Quora và nhận được một chút đánh giá cao. Tôi hy vọng nó cũng giúp ích ở đây