Python Personal Note
Planning to figure out problems of Python that confused me for a long phase.
The blog trace the steps of my study.
Handling int()
Official explain about this build-in function: https://docs.python.org/3/library/functions.html#int
Just found out that there is an arguement called base
, e.g., int(‘010’, 2).
In the past, when I was handling the value of form from user in web application, the program was quite not robust. For example, the program will easily crash if user input twelve in the register form of age.
So exception could be used to solve this problem:
try:
value = int(value)
except ValueError:
pass # it was a string, not an int.
Lambda, filter, reduce and map
Summary: http://www.python-course.eu/lambda.php
filter a list:
In [10]: list(filter(lambda x:x>0, a))
Out[10]: [1, 2, 3, 5]
In Python 2.x, filter
returned a list, but in Python 3.x, it returns an iterator.
iterator: https://docs.python.org/3/tutorial/classes.html#iterators
Or
In [23]: [i for i in l if i>0]
Out[23]: [1, 2, 3, 5]
filter a dict:
from random import randint
d = {x: randint(0, 10) for x in range(10)}
{0: 10, 1: 1, 2: 8, 3: 1, 4: 3, 5: 7, 6: 7, 7: 2, 8: 7, 9: 9}
{k: v for k, v in d.items() if v>5}
random.randint(a, b):
Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
filter a set:
Python3 Set:
https://docs.python.org/3/tutorial/datastructures.html#sets
enum for tuple
1. global variable:
NAME, AGE, EMAIL = range(3)
2. namedtuple:
doc: https://docs.python.org/3/library/collections.html?highlight=namedtuple#collections.namedtuple
from collections import namedtuple
Student = namedtuple('Stu', ['name', 'age', 'gender', 'email'])
s = Student('Henry', 24, 'm', 'daya0576@gmail.com')
s.name
Dictionary
Sorting a dictionary by value:
sorted(data.items(), key=lambda x:x[1], reverse=True)
Finding matching keys of dictionaries
from random import randint, sample
from functools import reduce
d1 = {x:randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
d2 = {x:randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
d3 = {x:randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
keys_lists = list(map(lambda x:x.keys(), [d1, d2, d3]))
result = reduce((lambda x, y:x&y), keys_lists)
OrderedDict doc: https://docs.python.org/3/library/collections.html?highlight=ordereddict#collections.OrderedDict
Random-sample:
random: https://docs.python.org/3/library/random.html
random.sample:
In [107]: l = 'abcdefg'
In [108]: from random import sample
In [109]: sample(l, 3)
Out[109]: ['c', 'f', 'a']
Python list implementation
http://www.laurentluce.com/posts/python-list-implementation/