Hi! I found python to be very easy to learn but I was not able to use it for cp before because of things like io speed which I did not know how to optimize earlier these are some things I learnt which made it much easier for me to use python for cp
Fast Input:
import sys
inp = [a.strip() for a in sys.stdin.readlines()] #inp is an array of input lines.
Reading an array
arr = [int(x) for x in inp[i].split()] # use float(x) if dealing with decimal values
Making 2d matrix ( or any n dim matrix ) of 0s
mat = [[0 for i in range(n)] for j in range(n)]
Printing without the \n:
print("output",end="")
Sorting using key (see example below)
arr = [[3,4],[1,2],[5,3],[-1,4]]
def fkey(a):
return a[0]*a[1]
arr.sort(key=fkey)
Reversing array/string
arr=arr[::-1]
Note 1: if arr is a list,
brr=arr
brr[0]*=2 # this also modifies arr and both lists are an array of pointers to the same thing
To make a copy of an array use this code brr=list(arr) Copy of string is also similar brr=string(arr)
Note 2:
a="ilu python"
a[0]='a' # this line gives the following error:
#'str' object does not support item assignment
# so if you have to modify the string, convert it into a list first
( list(a) )
Note 3: division in python normally returns a float, so to get integer division similar to cpp use '//' (a//b) operator or int(a/b)
Cpp data structures and their python equivalents:
- vector : list
- Map : dict
- set : set
- string : str
- stack/queue: #(Implemented using list) https://www.geeksforgeeks.org/using-list-stack-queues-python/
- list : -
Useful Libraries
1. Counter (to import: `from collections import Counter` ) # to count number of occurances of each element in a list
2. itertools (import itertools) (https://docs.python.org/2/library/itertools.html#module-itertools)
3. math
Thanks!









Auto comment: topic has been updated by ameykudari05 (previous revision, new revision, compare).
Auto comment: topic has been updated by ameykudari05 (previous revision, new revision, compare).
Auto comment: topic has been updated by ameykudari05 (previous revision, new revision, compare).
This is really useful. THANKS
Auto comment: topic has been updated by ameykudari05 (previous revision, new revision, compare).
The fact that you need to convert string->list to modify it or watch out not to assign by reference (btw the way you're doing it is wrong, it's
arr.copy()) should tell you Python isn't very good for CP. You can use it, but many operations are slow and should be avoided, including too much list manipulation.Thanks! I did not know about arr.copy(). And I agree python is not very good for cp and I myself use cpp most of the time but sometimes for div 2, A/B and sometimes C, its easier to code in python than cpp..
Maybe useful link