Python Notes
Python List के सभी built-in methods का complete reference – append, extend, insert, remove, pop, sort, reverse, index, count, copy, clear – examples और time complexity के साथ।
Quick Reference Table (सभी Methods एक नज़र में)
| Method | Syntax | Description | Returns | Complexity |
|---|---|---|---|---|
append() | l.append(x) | अंत में element add करे | None | O(1) amortized |
extend() | l.extend(iterable) | Iterable के सभी elements add करे | None | O(k) |
insert() | l.insert(i, x) | Position i पर x insert करे | None | O(n) |
remove() | l.remove(x) | पहला x हटाए | None | O(n) |
pop() | l.pop([i]) | Index i का element हटाए व return करे | Element | O(1)/O(n) |
clear() | l.clear() | सभी elements हटाए | None | O(n) |
index() | l.index(x[, s, e]) | x का पहला index return करे | int | O(n) |
count() | l.count(x) | x की गिनती return करे | int | O(n) |
sort() | l.sort(key, reverse) | In-place sort करे | None | O(n log n) |
reverse() | l.reverse() | In-place reverse करे | None | O(n) |
copy() | l.copy() | Shallow copy return करे | List | O(n) |
2. extend() – Multiple Elements जोड़ना
किसी भी iterable के सभी elements को list में add करता है।
Output:
3. insert() – किसी Position पर Insert करना
list.insert(index, element) – किसी specific index पर element insert करता है।
Output:
⚠️ Warning: insert() O(n) है क्योंकि elements shift करने पड़ते हैं।4. remove() – Value से Element हटाना
पहली occurrence को value के basis पर हटाता है।
Output:
5. pop() – Index से Element हटाना
Index के basis पर element हटाता है और return करता है।
Output:
| Error | pop from empty list |
| Pop | c |
| Pop | b |
| Pop | a |
6. clear() – सभी Elements हटाना
List को empty कर देता है।
Output:
7. index() – Element का Index ढूँढना
list.index(x, start=0, end=len(list)) – पहली occurrence का index return करता है।
Output:
8. count() – Occurrences गिनना
किसी value की list में कितनी बार है, return करता है।
Output:
9. sort() – In-place Sorting
list.sort(key=None, reverse=False) – List को in-place sort करता है।
Output:
sort() vs sorted()
| Feature | list.sort() | sorted() |
|---|---|---|
| In-place | ✅ Yes (modifies original) | ❌ No (new list) |
| Returns | None | New sorted list |
| Works on | Lists only | Any iterable |
| Memory | O(1) extra | O(n) extra |
| Use when | Original order unneeded | Original preserved |
Output:
10. reverse() – In-place Reversal
List को in-place reverse करता है।
Output:
| Method | Returns | In-place | Lazy |
|---|---|---|---|
reverse() | None | ✅ Yes | ❌ No |
[::-1] | New list | ❌ No | ❌ No |
reversed() | Iterator | ❌ No | ✅ Yes |
11. copy() – Shallow Copy
Output:
12. Chaining Methods
Output:
13. del Statement
del keyword list methods नहीं है, लेकिन important है।
Output:
14. Interview Questions (इंटरव्यू प्रश्न)
Q1: append() और extend() में क्या फर्क है?
append()किसी भी object को (including list) single element की तरह add करता है।extend()iterable के हर element को individually add करता है।
Q2: remove() और pop() में क्या difference है?
remove(x)valuexकी पहली occurrence हटाता है।pop(i)indexiपर का element हटाता और return करता है।remove()value-based,pop()index-based है।
Q3: sort() None क्यों return करता है?
यह Python का design principle है – in-place operationsNonereturn करते हैं ताकि programmer confuse न हो कि new list है या modified। यदि new sorted list चाहिए,sorted()use करें।
Q4: List को efficiently reverse करने का best तरीका?
Q5: List में most frequent element कैसे ढूँढें?
Summary Cheatsheet
⚠️ Common Mistakes
Mistake 1: sort() का result variable में assign करना ❌
None [1, 1, 3, 4, 5]
✅ Fix: अगर new sorted list चाहिए तोsorted()use करें:result = sorted(nums)
Mistake 2: Loop में list modify करना ❌
[1, 3, 5, 6]
✅ Fix: List comprehension use करें: nums = [x for x in nums if x % 2 != 0]Mistake 3: append() में list pass करना (nested list बन जाती है) ❌
[1, 2, 3, [4, 5]]
✅ Fix: Flat list चाहिए तोextend()use करें:a.extend([4, 5])→[1, 2, 3, 4, 5]
Mistake 4: copy() से Deep Copy की उम्मीद रखना ❌
[[1, 2, 99], [3, 4]] [[1, 2, 99], [3, 4]]
✅ Fix: Nested objects के लिए import copy; deep = copy.deepcopy(original) use करेंMistake 5: remove() को non-existent value पर call करना ❌
Error: list.remove(x): x not in list
✅ Fix: पहले check करें: if "mango" in fruits: fruits.remove("mango")Mistake 6: sort() mixed types पर use करना ❌
Error: '<' not supported between instances of 'str' and 'int'
✅ Fix: Sorting से पहले ensure करें कि सभी elements comparable हों (same type या custom key)
Mistake 7: insert() का performance underestimate करना ❌
# ❌ Beginning में repeatedly insert करना = O(n²)
result = []
for i in range(5):
result.insert(0, i) # हर बार सारे elements shift होते हैं!
print(result)[4, 3, 2, 1, 0]
✅ Fix:collections.dequeuse करें जिसमेंappendleft()O(1) है, याappend()+reverse()
✅ Key Takeaways
- 📌 append() vs extend():
append()single element add करता है (list भी as one element),extend()iterable के हर element को individually add करता है - 📌 In-place methods return None:
sort(),reverse(),append(),extend(),insert(),remove(),clear()सभीNonereturn करते हैं — result assign मत करो! - 📌 pop() is dual-purpose: बिना argument = last element (O(1)), with index = specific position (O(n) for non-last)
- 📌 remove() vs pop() vs del:
remove(value)value-based,pop(index)index-based + returns,del lst[i]index-based without return - 📌 sort() uses Timsort: O(n log n) worst case, O(n) best case (nearly sorted data), stable sort (equal elements maintain order)
- 📌 copy() is shallow only: Nested mutable objects अभी भी shared रहते हैं — deep copy के लिए
copy.deepcopy()use करें - 📌 Time Complexity याद रखें:
append()/pop()= O(1),insert(0)/pop(0)= O(n),sort()= O(n log n) - 📌 index() ValueError दे सकता है: Production code में हमेशा try-except या
if x in listcheck use करें - 📌 sorted() vs sort(): sorted() कोई भी iterable ले सकता है और new list return करता है, sort() सिर्फ lists पर काम करता है
- 📌 Loop में modification avoid करें: Iterating list को modify करने से unexpected results आते हैं — list comprehension prefer करें
❓ FAQ
Q1: append() और + operator में क्या difference है?
Answer: append(x) single element add करता है in-place (O(1)), जबकि + operator दो lists को concatenate करके new list बनाता है (O(n+m))। अगर repeatedly items add करने हैं तो append() ज़्यादा efficient है। += internally extend() जैसा काम करता है (in-place modify करता है)।
Q2: List को sort करते समय key parameter कैसे काम करता है?
Answer: key एक function accept करता है जो हर element पर apply होता है, और sorting उस function के return value पर होती है। Original elements change नहीं होते, बस comparison key function के output से होता है। Example: words.sort(key=len) words को उनकी length के basis पर sort करता है।
Q3: clear() और del list[:] में क्या difference है?
Answer: दोनों same काम करते हैं — list को empty कर देते हैं in-place। clear() ज़्यादा readable है (Python 3.3+ में available)। del list[:] slice deletion है जो same effect देता है। दोनों case में references (aliases) भी affected होती हैं।
Q4: pop(0) slow क्यों है? Alternative क्या है?
Answer: pop(0) O(n) है क्योंकि बाकी सारे elements एक position left shift होते हैं। अगर frequently front से remove करना है तो collections.deque use करें जिसका popleft() O(1) है। Small lists (< 1000 items) के लिए performance difference negligible होता है।
Q5: sort() stable sort है — इसका मतलब क्या है?
Answer: Stable sort का मतलब है कि अगर दो elements equal हैं (key function same value return करे), तो उनका original order maintain रहेगा। यह multi-level sorting में बहुत useful है — पहले secondary key से sort करो, फिर primary key से।
Q6: Nested list को flat कैसे करें list methods से?
Answer:
[1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6]
Q7: reverse() और sort(reverse=True) में difference क्या है?
Answer: reverse() simply element order उलटा कर देता है (O(n)) — no comparison। sort(reverse=True) descending order में sort करता है (O(n log n)) — elements compare होते हैं। [3,1,4].reverse() → [4,1,3], [3,1,4].sort(reverse=True) → [4,3,1]।
Q8: List method call करते समय None print हो रहा है — क्यों?
Answer: In-place methods (append, sort, reverse, etc.) None return करते हैं। अगर आप print(list.append(5)) लिखेंगे तो None print होगा। सही approach: पहले method call करें, फिर list print करें separately।
🎯 Interview Questions (Advanced)
Q1: Python List internally कैसे implement होती है?
Answer: Python list internally एक dynamic array (array of pointers) है। यह contiguous memory block में PyObject pointers store करती है। जब capacity full होती है, तो Python roughly 1.125x (over-allocation formula) size grow करता है, इसलिए append() amortized O(1) है। यह C array-list implementation पर based है (CPython में listobject.c)।
Q2: sort() कौनसा algorithm use करता है? इसकी properties बताओ।
Answer: Python Timsort algorithm use करता है (Tim Peters ने design किया)। Properties:
- Best case: O(n) — nearly sorted data
- Average/Worst: O(n log n)
- Space: O(n) worst case
- Stable: Yes (equal elements का order preserve)
- Adaptive: Existing runs (sorted subsequences) detect करता है
- यह merge sort + insertion sort का hybrid है
Q3: list.copy() और copy.deepcopy() में detailed difference बताओ।
Answer:
[1, 2, 99] [1, 2]
copy() सिर्फ top-level references copy करता है। Nested objects same memory location point करते हैं। deepcopy() recursively सभी objects की independent copies बनाता है।
Q4: List में pop(0) repeatedly call करना vs deque.popleft() — Performance difference?
Answer: list.pop(0) O(n) है (n-1 elements shift), repeatedly call = O(n²)। deque.popleft() O(1) है (doubly-linked list)। 10 lakh elements वाली list से 1 lakh items front से remove करना: list = ~seconds, deque = ~milliseconds। Rule: अगर front operations frequent हैं, deque use करें।
Q5: a += [1,2] और a = a + [1,2] में internal difference क्या है?
Answer:
a += [1,2]→ callsa.__iadd__([1,2])→ in-place extend (same object,id(a)same रहता है)a = a + [1,2]→ callsa.__add__([1,2])→ new list बनता है (different object,id(a)change)
यह matter करता है जब दूसरा variable same list reference कर रहा हो:
Q6: Custom object की list sort करनी है multiple criteria से — कैसे करें?
Answer:
[('Bob', 92), ('Alice', 85), ('Charlie', 85)]
[('Bob', 92), ('Alice', 85), ('Charlie', 85)]Q7: List method index() O(n) है — faster search कैसे करें?
Answer: Options:
- Sorted list:
bisect.bisect_left()— O(log n) binary search - Frequent lookups:
setयाdictuse करें — O(1) average - Index mapping:
{val: idx for idx, val in enumerate(lst)}— O(n) build, O(1) query
3
Q8: list.sort() और sorted() internally same algorithm use करते हैं?
Answer: हाँ, दोनों Timsort use करते हैं। Difference implementation level पर है:
list.sort()→ in-place modify, list temporarily empty state में जाती है sorting के दौरानsorted()→ new list allocate करता है, original untouched- Performance लगभग same है, बस
sorted()extra O(n) memory use करता है new list के लिए
Q9: Thread-safe हैं list methods?
Answer: CPython में GIL (Global Interpreter Lock) के कारण individual list operations (append, pop) atomically execute होती हैं — technically thread-safe। But compound operations (check-then-act: if x in list: list.remove(x)) thread-safe नहीं हैं। Production multi-threaded code में threading.Lock() या queue.Queue use करें।
Q10: Memory efficient list alternatives कब use करने चाहिए?
Answer:
| Scenario | Alternative | Benefit |
|---|---|---|
| Only integers | array.array('i', [...]) | ~4x less memory |
| Fixed size numeric | numpy.array | Vectorized ops + less memory |
| FIFO/LIFO | collections.deque | O(1) both ends |
| Immutable | tuple | Hashable, slightly faster |
| Large sorted data | bisect module | O(log n) search |
import sys
from array import array
lst = list(range(1000))
arr = array('i', range(1000))
print(f"List: {sys.getsizeof(lst)} bytes")
print(f"Array: {sys.getsizeof(arr)} bytes")List: 8856 bytes Array: 4064 bytes
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Python List Methods – All Built-in Methods.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Python Master Course topic.
Search Terms
python-master-course, python master course, python, master, course, data, structures, list
Related Python Master Course Topics