@@ -68,16 +68,70 @@ The `bytes` type is an immutable sequence of bytes, while `bytearray` is the mut
6868
6969| Operation | Time | Space | Notes |
7070| -----------| ------| -------| -------|
71+ | ` len() ` | O(1) | O(1) | Direct lookup |
72+ | ` access[i] ` | O(1) | O(1) | Direct indexing |
73+ | ` in ` (membership) | O(n) | O(1) | Linear search |
74+ | ** Mutation** ||||
7175| ` append(x) ` | O(1)* | O(1) | Amortized, may resize |
72- | ` insert(i, x) ` | O(n) | O(1) | Shift elements |
7376| ` extend(iterable) ` | O(k) | O(k) | k = length |
77+ | ` insert(i, x) ` | O(n) | O(1) | Shift elements |
7478| ` pop() ` | O(1) | O(1) | Remove last |
75- | ` pop(0 ) ` | O(n) | O(1) | Shift remaining |
79+ | ` pop(i ) ` | O(n) | O(1) | Remove at index; shifts remaining |
7680| ` remove(x) ` | O(n) | O(1) | Search and remove |
7781| ` clear() ` | O(n) | O(1) | Deallocate |
7882| ` copy() ` | O(n) | O(n) | Shallow copy |
7983| ` reverse() ` | O(n) | O(1) | Reverse in-place |
8084| ` resize(n) ` | O(n) | O(1) | Resize to n bytes; may truncate or zero-fill |
85+ | ** Search** ||||
86+ | ` find(sub) ` | O(n + m) avg | O(1) | n = length, m = pattern length |
87+ | ` rfind(sub) ` | O(n* m) worst | O(1) | Search from right |
88+ | ` index(sub) ` | O(n) | O(1) | Like find() but raises ValueError |
89+ | ` rindex(sub) ` | O(n* m) worst | O(1) | Like rfind() but raises ValueError |
90+ | ` count(sub) ` | O(n) | O(1) | Count non-overlapping occurrences |
91+ | ` startswith(prefix) ` | O(m) | O(1) | m = prefix length |
92+ | ` endswith(suffix) ` | O(m) | O(1) | m = suffix length |
93+ | ** Replace/Translate** ||||
94+ | ` replace(old, new) ` | O(n) | O(n) | Creates new bytearray |
95+ | ` translate(table) ` | O(n) | O(n) | Single pass with table lookup |
96+ | ` maketrans(from, to) ` | O(k) | O(k) | k = mapping size; static method |
97+ | ` expandtabs(tabsize) ` | O(n) | O(n) | Replace tabs with spaces |
98+ | ` removeprefix(prefix) ` | O(n) | O(n) | Returns slice if prefix matches |
99+ | ` removesuffix(suffix) ` | O(n) | O(n) | Returns slice if suffix matches |
100+ | ** Split/Join** ||||
101+ | ` split(sep) ` | O(n) | O(n) | Single pass |
102+ | ` rsplit(sep) ` | O(n) | O(n) | Split from right |
103+ | ` splitlines() ` | O(n) | O(n) | Split on line boundaries |
104+ | ` partition(sep) ` | O(n) | O(n) | Split into 3-tuple at first sep |
105+ | ` rpartition(sep) ` | O(n) | O(n) | Split into 3-tuple at last sep |
106+ | ` join(iterable) ` | O(n) | O(n) | n = total output length |
107+ | ** Case Conversion** ||||
108+ | ` upper() ` | O(n) | O(n) | ASCII uppercase |
109+ | ` lower() ` | O(n) | O(n) | ASCII lowercase |
110+ | ` capitalize() ` | O(n) | O(n) | Uppercase first, lowercase rest |
111+ | ` title() ` | O(n) | O(n) | Titlecase words |
112+ | ` swapcase() ` | O(n) | O(n) | Swap upper/lower |
113+ | ** Stripping** ||||
114+ | ` strip(chars) ` | O(n) | O(n) | Remove from both ends |
115+ | ` lstrip(chars) ` | O(n) | O(n) | Remove from left |
116+ | ` rstrip(chars) ` | O(n) | O(n) | Remove from right |
117+ | ** Padding/Alignment** ||||
118+ | ` center(width) ` | O(n) | O(n) | Pad both sides |
119+ | ` ljust(width) ` | O(n) | O(n) | Pad right side |
120+ | ` rjust(width) ` | O(n) | O(n) | Pad left side |
121+ | ` zfill(width) ` | O(n) | O(n) | Pad with zeros |
122+ | ** Predicates** ||||
123+ | ` isalnum() ` | O(n) | O(1) | Check alphanumeric |
124+ | ` isalpha() ` | O(n) | O(1) | Check alphabetic |
125+ | ` isascii() ` | O(n) | O(1) | Check ASCII (Python 3.7+) |
126+ | ` isdigit() ` | O(n) | O(1) | Check digit chars |
127+ | ` islower() ` | O(n) | O(1) | Check lowercase |
128+ | ` isspace() ` | O(n) | O(1) | Check whitespace |
129+ | ` istitle() ` | O(n) | O(1) | Check titlecase |
130+ | ` isupper() ` | O(n) | O(1) | Check uppercase |
131+ | ** Encoding** ||||
132+ | ` decode(encoding) ` | O(n) | O(n) | Convert to string |
133+ | ` hex() ` | O(n) | O(n) | Convert to hex string |
134+ | ` fromhex(string) ` | O(n) | O(n) | Create bytearray from hex; class method |
81135
82136## Implementation Details
83137
0 commit comments