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!