Lists
# Creating a list
my_list = []
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# List of different data types
mixed_list = [1, "hello", 3.14, True]
# Accessing elements
print(my_list[0]) # Output: 1
print(my_list[-1]) # Output: 5
# Append to the end
my_list.append(6)
# Insert at a specific position
my_list.insert(2, 10)
# Find an element in an array
index=my_list.find(element)
# Remove by value
my_list.remove(10)
# Remove by index
removed_element = my_list.pop(2)
# Length of the list
print(len(my_list))
# Slicing [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# sequence[start:stop:step]
print(my_list[1:4]) # Output: [1, 2, 3]
print(my_list[5:]) # Output: [5, 6, 7, 8, 9]
print(my_list[:5]) # Output: [0, 1, 2, 3, 4]
print(my_list[::2]) # Output: [0, 2, 4, 6, 8]
print(my_list[-4:]) # Output: [6, 7, 8, 9]
print(my_list[:-4]) # Output: [0, 1, 2, 3, 4, 5]
print(my_list[::-1]) # Output: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(my_list[8:2:-2]) # Output: [8, 6, 4]
print(my_list[1:8:2]) # Output: [1, 3, 5, 7]
print(my_list[-2:-7:-1]) # Output: [8, 7, 6, 5, 4]
# Reversing a list
my_list.reverse()
# Sorting a list
my_list.sort()
Permutation & Combination
import itertools
# Example list
data = [1, 2, 3]
# Generating permutations of the entire list
perms = list(itertools.permutations(data))
print(perms)
# Output: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
# Generating permutations of length 2
perms_length_2 = list(itertools.permutations(data, 2))
print(perms_length_2)
# Output: [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
combinations(iterable, r) #order does not matter
Generating Permutations Manually You can also generate permutations manually using recursion. Here’s a simple implementation:
def permute(arr):
result = []
# Base case: if the list is empty, return an empty list
if len(arr) == 0:
return [[]]
# Recursive case
for i in range(len(arr)):
elem = arr[i]
rest = arr[:i] + arr[i+1:]
for p in permute(rest):
result.append([elem] + p)
return result
Stack
(list can be used as stack)
st=[]
st.append()
st.pop()
top_element = stack[-1]
Tips
- Strip: It is used to remove leading and trailing whitespace (or other specified characters) from a string
#EX. (1,2) to 1,2
s.strip('()')
- Don't use normal dictionary
from collections import defaultdict
dictionary=defaultdict(int)
- Important checking and convertion
s.isdigit()
s.isalpha()
s.isalnum()
s.islower()
s.isupper()
s.lower()
s.upper()
- Non-Trivial
round(number, decimal_digits)
ord(each)-ord('a')+1 # value of an alphabet
#/ (Floating-Point Division)
#// (Floor Division)
maxim = float('-inf')
minim = float('inf')
unique_lengths.sort(reverse=True)
s.count('x')
list1 = [1, 2, 3]
iterable = [4, 5, 6]
list1.extend(iterable)
position.replace('(', '').replace(')', '')
expression = "2 + 3 * 4"
result = eval(expression)
print(result)
#Determinant
import numpy as
arr=[[1,2,3],[3,4,5],[5,6,7]]
print(np.linalg.det(np.array(arr)))
Sorted
my_list = [3, 1, 4, 1, 5]
sorted_list = sorted(my_list)
my_tuple = (3, 1, 4, 1, 5)
sorted_list = sorted(my_tuple)
my_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_keys = sorted(my_dict)
my_list = [3, 1, 4, 1, 5]
sorted_list = sorted(my_list, reverse=True)
Enumerate
my_list = ['a', 'b', 'c']
for index, value in enumerate(my_list):
print(index, value)
Pass by Object Reference
Immutable Types (like integers, strings, tuples):
def modify_immutable(x):
x = 10 # Rebinding the local variable to a new object
print("Inside function:", x)
a = 5
modify_immutable(a) #prints 10
print("Outside function:", a) #prints 5
Mutable Types (like lists, dictionaries, sets):
def modify_mutable(lst):
lst.append(4) # Modifying the original list object
print("Inside function:", lst)
my_list = [1, 2, 3]
modify_mutable(my_list) # [1,2,3]
print("Outside function:", my_list) # [1,2,3,4]
Numpy arrays (for numerical operations)
import numpy as np
# Creating a 1D array
arr_1d = np.array([1, 2, 3, 4, 5])
# Creating a 2D array
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# Creating an array filled with zeros
zeros = np.zeros((3, 4))
# Creating an array filled with ones
ones = np.ones((2, 3))
# Creating an array with a range of values
range_arr = np.arange(0, 10, 2)
# Creating an array with evenly spaced values
linspace_arr = np.linspace(0, 1, 5)
# Creating an identity matrix
identity_matrix = np.eye(3)
# Shape of the array
shape = arr_2d.shape # Output: (2, 3)
# Size of the array (total number of elements)
size = arr_2d.size # Output: 6
# Element-wise addition
arr_add = arr_1d + 5 # Output: array([6, 7, 8, 9, 10])
# Element-wise subtraction
arr_sub = arr_1d - 2 # Output: array([ -1, 0, 1, 2, 3])
# Element-wise multiplication
arr_mul = arr_1d * 2 # Output: array([ 2, 4, 6, 8, 10])
# Element-wise division
arr_div = arr_1d / 2 # Output: array([0.5, 1. , 1.5, 2. , 2.5])
# Sum
total_sum = np.sum(arr_2d) # Output: 21
# Mean
mean_value = np.mean(arr_2d) # Output: 3.5
# Standard deviation
std_dev = np.std(arr_2d) # Output: 1.707825127659933
# Maximum and minimum
max_value = np.max(arr_2d) # Output: 6
min_value = np.min(arr_2d) # Output: 1
# Reshaping
reshaped_arr = arr_1d.reshape((5, 1))
# Flattening
flattened_arr = arr_2d.flatten()
# Transposing
transposed_arr = arr_2d.T
# Indexing
element = arr_2d[1, 2] # Output: 6
# Slicing
subarray = arr_2d[0:2, 1:3] # Output: array([[2, 3], [5, 6]])
Astype
It is a function in NumPy used to convert a numpy array to different data type.
# Datatypes: np.int32,np.float32,np.float64,np.str_
import numpy as np
# Create an integer array
int_array = np.array([1, 2, 3, 4, 5], dtype=np.int32)
# Convert to float
float_array = int_array.astype(np.float32)
print("Original array:", int_array)
print("Converted array:", float_array)
Reshape
It is a powerful tool for changing the shape of an array without altering its data
import numpy as np
# Create a 1D array
array = np.arange(12)
# Reshape to a 2D array (3 rows x 4 columns)
reshaped_array = array.reshape((3, 4))
Matplotlib
import numpy as np
import matplotlib.pyplot as plt
# Create a random 2D array
data = np.random.rand(10, 10)
# Create a figure with a specific size and resolution
plt.figure(figsize=(8, 6), dpi=100)
# Display the 2D array as an image
plt.imshow(data, cmap='viridis', interpolation='nearest')
# Add a color bar to show the scale of values
plt.colorbar()
# Show the plot
plt.show()
Dictionary
# Creating an empty dictionary
# Maintains ascending order like map in cpp
my_dict = {}
# Creating a dictionary with initial values
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# Creating a dictionary using the dict() function
my_dict = dict(name='Alice', age=25, city='New York')
# Accessing a value by key
name = my_dict['name'] # Output: 'Alice'
# Using the get() method to access a value
age = my_dict.get('age') # Output: 25
country = my_dict.get('country') # Output: None
# Adding a new key-value pair
my_dict['email'] = 'alice@example.com'
# Updating an existing value
my_dict['age'] = 26
# Removing a key-value pair using pop()
age = my_dict.pop('age') # Removes 'age' and returns its value
# Getting all keys in the dictionary
keys = my_dict.keys() # Output: dict_keys(['name', 'email'])
# Getting all values in the dictionary
values = my_dict.values() # Output: dict_values(['Alice', 'alice@example.com'])
# Iterating over keys
for key in my_dict:
print(key)
# Iterating over values
for value in my_dict.values():
print(value)
# Iterating over key-value pairs
for key, value in my_dict.items():
print(f"{key}: {value}")
Defaultdict
from collections import defaultdict
d = defaultdict(int)
# Initializes 0 to non-existent keys
d['apple'] += 1
d['banana'] += 2
Set
# Creating an empty set
my_set = set()
# Creating a set with initial values
my_set = {1, 2, 3, 4, 5}
# Creating a set from a list
my_list = [1, 2, 3, 4, 5]
my_set = set(my_list)
# Creating a set from a string
my_set = set('hello') # Output: {'e', 'h', 'l', 'o'}
# Adding an element to a set
my_set.add(6) # my_set becomes {1, 2, 3, 4, 5, 6}
# Removing an element from a set (raises KeyError if not found)
my_set.remove(3) # my_set becomes {1, 2, 4, 5, 6}
# Removing and returning an arbitrary element from the set
element = my_set.pop() # Returns and removes an arbitrary element
String
# Single quotes
str1 = 'Hello'
# Double quotes
str2 = "World"
# Triple quotes for multi-line strings
str3 = '''This is a
multi-line string.'''
# Raw strings (ignores escape sequences)
raw_str = r'C:\Users\Name'
str1 = 'Hello'
# Accessing a single character
char = str1[1] # 'e'
# Accessing a substring (slicing)
substring = str1[1:4] # 'ell'
# Negative indexing
last_char = str1[-1] # 'o'
# Using + operator
concatenated = 'Hello' + ' ' + 'World' # 'Hello World'
# Using join method
words = ['Hello', 'World']
concatenated = ' '.join(words) # 'Hello World'
name = 'Alice'
age = 25
# String formatting
formatted_str = f'My name is {name} and I am {age} years old.'
# Convert to uppercase
upper_str = str1.upper() # 'HELLO WORLD'
# Convert to lowercase
lower_str = str1.lower() # 'hello world'
# Convert to capitalize
capital_str = str1.capitalize() # 'Hello world'
str1 = ' Hello World '
# Remove leading and trailing whitespace
trimmed = str1.strip() # 'Hello World'
str1 = 'Hello World Python'
# Split the string into a list of substrings
split_list = str1.split() # ['Hello', 'World', 'Python']
# Split the string with a specific delimiter
split_list = str1.split(' ') # ['Hello', 'World', 'Python']
# Join a list of strings into a single string
joined_str = ' '.join(split_list) # 'Hello World Python'
str1 = 'Hello World'
# Find the position of a substring
pos = str1.find('World') # 6
str1 = 'Hello123'
# Check if all characters are alphanumeric
is_alnum = str1.isalnum() # True
# Check if all characters are alphabetic
is_alpha = str1.isalpha() # False
# Check if all characters are digits
is_digit = str1.isdigit() # False
# Check if all characters are lowercase
is_lower = str1.islower() # False
# Check if all characters are uppercase
is_upper = str1.isupper() # False
Stay Connected! If you enjoyed this post, don’t forget to follow me on social media for more updates and insights:
Twitter: madhavganesan
Instagram: madhavganesan
LinkedIn: madhavganesan