This is part 1 of back to basics series. Today's topic is python. Let's dive into code!
Numbers - int, float, complex
year = 2021 type(year) # int pi = 3.14 type(pi) # 3.14 # conversion int(3.5) # 3 float(3) # 3.0 # some math op float_num = 5 / 2 # returns a float floored_div = 5 // 2 # returns a int squared = 2 ** 2 mod = 5 % 2 # get divisor and modulas div, mod = divmod(5, 2) complex_num = 3 + 2j # (3 + 2j) type(complex_num) # complex # some functions abs(-25) round(2.5)
Strings and Bytes
# string can use single/double or docblock quote name = "Python" + 'Python' + """Python""" type(name) # str binary = b"Python" type(binary) # bytes name == binary # false # codepoint to str chr(65) # A type(chr(65)) # str chr(240) # ð # str functions "python".upper() # PYTHON "python".capitalize() # Python " python ".strip() # python ("hello" "world") # helloworld "hello"[0] # h "hello world".split() # list [hello, world] # python string are immutable! # string/array slicing "hello"[0] # h "hello"[-1] # o "hello"[:] # hello "hello"[1:] # ello "hello"[:-1] # hell # str formatting "{lang} is awesome".format(lang="Python") # Python is awesome lang = "Python" f"{lang} is awesome" # Python is awesome # strings are enumerable upper = "" for c in "hello": upper += c.upper() # list comprehension on string "".join([c.upper() for c in "hello"]) # byte conversion "hello".encode() # b"hello" "ð".encode() # conver into bytes b'\xc3\xb0' len("ð") # 1 len("ð".encode()) # 2
Collection - list, tuple, set, dict
# list aka dynamic array evens = [2, 4, 6] evens.append(8) # [2, 4, 6, 8] evens.remove(2) # [4, 6, 8] evens.index(6) # 1 evens.extend([8, 10]) # [4, 6, 8, 8, 10] evens.sort() # sort asc order sorted(evens, reverse=True) # sort desc order # looping a list for val in range(5): print(val) # looping list with index for i, val in enumerate(range(5)): print(i, val) # 2d array, 2x3 dimension grid = [[1,2,3], [4,5,6]] [0] * 3 # [0, 0, 0] [[0, 1]] * 3 # [[0, 1], [0, 1], [0, 1]] # jagged array jagged = [[1], [1,2], [1,2,3]] # tuple - immutable immutable_list = tuple(2, 4, 6) # set distinct = set("AABBCCDD") # {'A', 'B', 'C', 'D'} # conversion a_list = list(range(5)) a_tup = tuple(a_list) a_set = set(a_list) # dict - map hash_map = {"state": "GA", "post_code": 30342} hash_map.keys() # dict_keys(['state', 'post_code']) hash_map.values() # dict_values(['GA', 30342]) hash_map.get('state') # GA hash_map.get('unknown_key', 'default_val') # default_val hash_map.setdefault('foo', 'bar') hash_map['foo'] = 'baz' # looping a dict for k, v in hash_map.items(): print(k, v)
List comprehension
[x**2 for x in range(5)] # [0, 1, 4, 9, 16] # set {x**2 for x in range(5)} # {0, 1, 4, 9, 16} [key for key in hash_map.keys()] # ['state', 'post_code'] [val for val in hash_map.values()] # ['GA', 30342] [item for item in hash_map.items()] # [('state', 'GA'), ('post_code', 30342)] # dict {key: key ** 2 for key in range(5)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Dates - datetime, time, timedelta
from datetime import date, datetime, timedelta import time # just the day today = date.today() # specific day dob = date(2000,1,1) dob.isoformat() # '2000-01-01' delta_days = today - dob # days dt = datetime.fromisoformat('2011-11-04') # only python >= 3.7 # date diff using timedelta yesterday = today - timedelta(days=1) tomorrow = today + timedelta(days=1) # datetime, it uses timezon today = datetime.today() # timestamp timestamp = time.time() today = date.fromtimestamp(timestamp) # date formatting today.strftime("%Y-%m-%d %H:%M:%S") # 2021-01-30 16:01:20
Functional programming - itertools, functools
# generator expressions - surrounded by parenthesis () iter = (line.strip() for line in ["hello world", "foo bar"]) # map, filter list(map(lambda x: x.upper(), ["hello", "world"])) # ['HELLO', 'WORLD'] list(filter(lambda x: x % 2 == 0, range(10))) # [0, 2, 4, 6, 8] # any, all any([0,0,1]) # True all([1,1,1]) # True # itertools module from itertools import count, cycle, repeat, takewhile, accumulate, groupby import operator # infinite iterator # start counting from 100, 200, 300 ... for i in count(100, 100): if i >= 1000: break print(i) # takewhile list(takewhile(lambda x: x < 1000, count(100, 100))) # cycle for val in cycle("ABC"): print(val) # repeat some numbers repeat("ABC") # repeat infinitely repeat("ABC", 3) # repeat 3 times # running sum list(accumulate(range(10))) # group by - iterms need to be sorted! {k: len(list(g)) for k, g in groupby('AABBBCCDEEE')} # {'A': 2, 'B': 3, 'C': 2, 'D': 1, 'E': 3} # functools module - reduce from functools import reduce import operator # sum up, init 0 reduce(operator.add, range(10), 0)
Top comments (0)