%load_ext nb_black


# Python Built-in Methods¶

## Number¶

### Get Multiples of a Number Using Modulus¶

If you want to get multiples of a number, use the modulus operator %. The modulus operator is used to get the remainder of a division. For example, 4 % 3 = 1, 5 % 3 = 2.

Thus, to get multiples of n, we select only numbers whose remainders are 0 when dividing them by n.

def get_multiples_of_n(nums: list, n: int):
"""Select only numbers whose remainders
are 0 when dividing them by n"""
return [num for num in nums if num % n == 0]

nums = [1, 4, 9, 12, 15, 16]

get_multiples_of_n(nums, 2)  # multiples of 2

[4, 12, 16]

get_multiples_of_n(nums, 3)  # multiples of 3

[9, 12, 15]

get_multiples_of_n(nums, 4)  # multiples of 4

[4, 12, 16]


### fractions: Get Numerical Results in Fractions instead of Decimals¶

Normally, when you divide a number by another number, you will get a decimal:

2 / 3 + 1

1.6666666666666665


Sometimes, you might prefer to get the results in fractions instead of decimals. There is Python built-in function called fractions that allows you to do exactly that. The code above shows how it works:

from fractions import Fraction

res = Fraction(2 / 3 + 1)
print(res)

3752999689475413/2251799813685248


Cool! We got a fraction instead of a decimal. To limit the number of decimals displayed, use limit_denominator().

res = res.limit_denominator()
print(res)

5/3


What happens if we divide the result we got from Fraction by another number?

print(res / 3)

5/9


Nice! We got back a fraction without using the Fraction object again.

Being able to turn decimals into fractions is nice, but what if want to get other nice math outputs in Python such as $$\sqrt{8} = 2\sqrt{2}$$? That is when SymPy comes in handy.

### How to Use Underscores to Format Large Numbers in Python¶

large_num = 1_000_000
large_num

1000000


### Confirm whether a variable is a number¶

from numbers import Number

a = 2
b = 0.4

isinstance(a, Number)

True

isinstance(b, Number)

True


## Boolean Operators: Connect Two Boolean Expressions into One Expression¶

movie_available = True
have_money = False

get_excited = movie_available | have_money
get_excited

True

buy = movie_available & have_money

False


## String¶

### String find: Find the Index of a Substring in a Python STring¶

sentence = "Today is Saturaday"

# Find the index of first occurrence of the substring
sentence.find("day")

2

# Start searching for the substring at index 3
sentence.find("day", 3)

15

sentence.find("nice")
# No substring is found

-1


### re.sub: Replace One String with Another String Using Regular Expression¶

import re

text = "Today is 3/7/2021"
match_pattern = r"(\d+)/(\d+)/(\d+)"

re.sub(match_pattern, "Sunday", text)

'Today is Sunday'

re.sub(match_pattern, r"\3-\1-\2", text)

'Today is 2021-3-7'


## List¶

### any: Check if Any Element of an Iterable is True¶

text = "abcdE"
any(c for c in text if c.isupper())

True


### Extended Iterable Unpacking: Ignore Multiple Values when Unpacking a Python Iterable¶

a, *_, b = [1, 2, 3, 4]
print(a)

1

b

4

_

[2, 3]


### How to Unpack Iterables in Python¶

nested_arr = [[1, 2, 3], ["a", "b"], 4]
num_arr, char_arr, num = nested_arr

num_arr

[1, 2, 3]

char_arr

['a', 'b']


## Class¶

### str and repr: Create a String Representation of a Python Object¶

class Food:
def __init__(self, name: str, color: str):
self.name = name
self.color = color

def __str__(self):
return f"{self.color} {self.name}"

def __repr__(self):
return f"Food({self.color}, {self.name})"

food = Food("apple", "red")

print(food)  #  str__

red apple

food  # __repr__

Food(red, apple)