PyNotes
261 subscribers
125 photos
7 videos
1 file
60 links
**Code is communication**
admin: @Xojarbu
https://t.me/solutions_py for problem solutions
Download Telegram
Title: Object copying
#Source "Python Tricks" by Dan Bader
Namedtuples sample

Namedtuples are immutable containers, just like regular
tuples. All attributes on a
namedtuple object follow the “write once, read many” principle.

namedtuple is also immutable as tuples.
#Deque
A deque
(double-ended queue), from collections library, has the feature of adding and removing elements from either end(source). It is preferred over list in the cases where we need quicker append and pop operations from both the ends of container, as deque provides an O(1) time complexity for append and pop operations as compared to list which provides O(n) time complexity (source).
#Deque_continue
deque(maxlen=N) creates a fixed-sized queue. When new items are added and the queue is full, the oldest item is automatically removed. (Source: "Python Cookbook")
#SubArray, #SubSequence, #SubSet

Comparing SubArray SubSequence and SubSet

Subarray
is contiguous sequence in an array.
e.g we have an array of {1, 2, 3, 4}
subarray can be: {1,2,3}, {2,3,4}, {1,2} etc.

A subsequence doesn't need to be contiguous, but maintains order
e.g subsequence can be: {1, 2, 4} {2, 4} {1, 3, 4} etc.

A subset doesn’t need to maintain order and has non-contiguous behavior.
e.g subset can be: {4, 1,3} {3, 1, 2 } etc.
#heapq

Finding the Largest or Smallest N Items

The heapq
module has two functions—nlargest() and nsmallest()

✍️ note
that If you are simply trying to find the single smallest or largest item (N=1), it is faster to use min() and max()

source: "python cookbook" 3rd edition
sort() with sorted()

the sort()
function will modify the list it is called on. The sorted() function will create a new list containing a sorted version of the list it is given.
Dict keyword access
If nested dictionary throws an error while getting item by key with get(), You can use default empty {}
#heapq
Title: heapq

The most important feature of a heap is that heap[0] is always the smallest item.

heapq.heappop()-pops off the first item and replaces it with the next smallest item (an operation that
requires O(log N) operations where N is the size of the heap)
source: Python cookbook
#dicts

Title: Calculating dicts
prices = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
}
Get min from dict:
min_price = min(zip(prices.values(), prices.keys())) 
# min_price is (10.75, 'FB')

Get max from dict

max_price = max(zip(prices.values(), prices.keys())) 
# max_price is (612.78, 'AAPL')


Sort Dict:
prices_sorted = sorted(zip(prices.values(), prices.keys()))

📌 be aware that zip() creates an iterator that can only be consumed once. If you call zip variable next time, it will return empty obj.
#dicts
Title: Comparing dictionaries
Dictionary keys() and items() support common set operations such as unions, intersections, and differences.

values()
method of a dictionary does not support the set operations, therefore we cannot perform those operations with dictionary values.

Source: Python Cookbook
Title: Remove duplicates from list, without changing items order

You can do the same with set(items), but it doesn’t preserve any kind of ordering. Output will be:
{1, 2, 10, 5, 9}

! This works with hashable items.

Source: Python cookbook
#counter #most_common
Find Most Frequently repeated Items in
a Sequence
Transforming and reducing data

To calculate the sum of
squares, do the following:

nums = [1, 2, 3, 4, 5]
s = sum(x * x for x in nums)

instead of:
s = sum((x * x for x in nums)) or
s = sum([x * x for x in nums])

It introduces an extra step and creates an extra list or tuple.

Source: Python cookbook
#class #methods
Title: __repr__ with __str__


—When we call Class it is represented by __str__ method by default, if there is not __str__ method, __repr__() method will be called.
—The __repr__() method returns the code representation of an instance, The __str__() method converts the instance to a string

! A good example is provided above

source: "Python Cookbook:
MRO (method resolution order) list is simply a linear ordering of all the base classes
#memory_management
Title: String interning
To alleviate memory that can be quickly consumed by strings, Python implements string interning
— A string will be interned if it is a compile-time constant, is not the production of constant folding or is not longer than 20 characters, and consists exclusively of ASCII letters, digits, or underscores.
—Empty strings are interned.
Source
Title: Namespaces
A namespace is a system that has a unique name for each and every object in Python. An object might be a variable or a method.

There are 3 types of namespaces:
built-in namespaces
global namespaces
local namespaces

e.g
var1 = 5 # global namespace
def some_func():
var2 = 6
# local namespace

The built-in namespace is always available when Python is running. You can list all built-in namespaces with dir(__builtins__)

Source