
- Python Basic Tutorial
- Python - Home
- Python - Overview
- Python - Environment Setup
- Python - Basic Syntax
- Python - Comments
- Python - Variables
- Python - Data Types
- Python - Operators
- Python - Decision Making
- Python - Loops
- Python - Numbers
- Python - Strings
- Python - Lists
- Python - Tuples
- Python - Dictionary
- Python - Date & Time
- Python - Functions
- Python - Modules
- Python - Files I/O
- Python - Exceptions
Python Tricks for Competitive Coding
Python is one of the preferred languages among coders for most of the competitive programming challenges. Most of the problems are easily computed in a reasonable time frame using python.
For some of the complex problem, writing fast-enough python code is often a challenge. Below are some of the pythonic code constructs that help to improve the performance of your code in competitive coding −
1. Strings concatenation: Do not use the below construct.
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] for x in some_list: str1 += x print(str1)
Above method gives huge time overhead.Instead, try to use this (join method) −
str1 = "" some_list = ["Welcome ", "To ", "Tutorialspoint "] print(str1.join(some_list))
2. The Map function
Generally, you have an input in competitive coding, something like −
1234567
To get them as a list of numbers simply
list(map (int, input().split()))
Always use the input() function irrespective of the type of input and then convert it using the map function.
>>> list(map(int, input("enter numbers:").split())) enter numbers:1 2 3 4 5 6 7 [1, 2, 3, 4, 5, 6, 7] >>>
The map function is one of the beautiful in-built function of python, which comes handy many times. Worth knowing.
3. Collections module
In case we want to remove duplicates from a list. While in other languages like Java you may have to use HashMap or any other freaky way, however, in pytho it's simply
>>> print(list(set([1,2,3,4,3,4,5,6]))) [1, 2, 3, 4, 5, 6]
Also, be careful to use extend() and append() in lists, while merging two or more lists.
>>> 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. Language constructs
It's better to write your code within functions, although the procedural code is supported in Python.
def main(): for i in range(2**3): print(x) main()
is much better than
for x in range(2**3): print(x)
It is faster to store local variables than globals because of the underlying Cpython implementation.
5. Use the standard library:
It’s better to use built-in functions and standard library package as much as possible. There, instead of −
newlist = [] for x in somelist: newlist.append(myfunc(x))
Use this −
newlist = map(myfunc, somelist)
Likewise, try to use the itertools(standard library), as they are much faster for a common task. For example, you can have something like permutation for a loop with a few lines of code.
>>> 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. Generators
Generators are excellent constructs to reduce both, the memory footprint and the average time complexity of the code you’ve written.
def fib(): a, b = 0, 1 while 1: yield a a, b = b, a+b
- Related Articles
- Why is python best suited for Competitive Coding
- C++ tricks for competitive programming
- C++ tricks for competitive programming (for C++ 11)?
- BFS using STL for competitive coding in C++?
- Some useful C++ tricks for beginners in Competitive Programming
- Python Input Methods for Competitive Programming?
- How good is Python for competitive programming?
- Coding standards (style guide) for Python programs?
- Essential Python Tips And Tricks For Programmers?
- Python Coding Style Guide
- Efficient Huffman Coding for Sorted Input
- 10 Interesting Python Cool Tricks
- Tips and Tricks for Using Hashtags
- What are Python coding standards/best practices?
- Difference between Outpatient Coding and Inpatient Coding
