Python Notes
Python Lists ka complete guide – creation, indexing, slicing, mutability, nesting, and real-world usage with code examples, time complexity, and interview questions.
Introduction (परिचय)
Python List एक ordered, mutable collection है जो किसी भी type के elements store कर सकती है। यह Python की सबसे versatile और commonly used data structure है।
Key Points: - ✅ Ordered – Elements का order maintain होता है - ✅ Mutable – Creation के बाद modify किया जा सकता है - ✅ Allows Duplicates – Same value multiple times हो सकती है - ✅ Heterogeneous – Different types के elements एक list में - ✅ Dynamic Size – Runtime पर grow/shrink होती है
2. Indexing (इंडेक्सिंग)
Python lists 0-based indexing use करती हैं। Negative indexing भी supported है।
Output:
Indexing Diagram
3. Slicing (स्लाइसिंग)
Slicing syntax: list[start:stop:step]
Output:
4. List Mutability (बदलाव करना)
Lists mutable होती हैं – elements को change किया जा सकता है।
Output:
5. List Operations (ऑपरेशन)
Output:
6. List Iteration (Traversal)
Output:
| 0 | apple |
| 1 | banana |
| 2 | cherry |
| Index 0 | apple |
| Index 1 | banana |
| Index 2 | cherry |
7. Nested Lists (नेस्टेड लिस्ट)
Output:
8. Copying Lists (कॉपी करना)
Output:
9. List Unpacking (अनपैकिंग)
Output:
10. Time Complexity (समय जटिलता)
| Operation | Average Case | Worst Case | Notes |
|---|---|---|---|
l[i] (index access) | O(1) | O(1) | Direct memory access |
l[i] = x (assignment) | O(1) | O(1) | Direct memory write |
append(x) | O(1) amortized | O(n) | Occasional resize |
insert(i, x) | O(n) | O(n) | Shift elements right |
pop() | O(1) | O(1) | Remove last |
pop(i) | O(n) | O(n) | Shift elements left |
remove(x) | O(n) | O(n) | Search + shift |
x in list | O(n) | O(n) | Linear search |
len(l) | O(1) | O(1) | Stored attribute |
l[a:b] (slice) | O(k) | O(k) | k = b-a elements |
l.sort() | O(n log n) | O(n log n) | Timsort |
l + m (concat) | O(k) | O(k) | k = len(m) |
min(l), max(l) | O(n) | O(n) | Full scan |
💡 Tip: जब frequently middle में insert/delete करना हो तो collections.deque या linked list prefer करें।11. Memory Layout
| ob_size | ob_alloc | *ob_item | ||
|---|---|---|---|---|
| (len) | (capacity) | (pointer) |
12. List vs Other Sequences
| Feature | List | Tuple | String | Array |
|---|---|---|---|---|
| Mutable | ✅ Yes | ❌ No | ❌ No | ✅ Yes |
| Ordered | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Duplicates | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Heterogeneous | ✅ Yes | ✅ Yes | ❌ (chars only) | ❌ (typed) |
| Memory | Medium | Less | Less | Least |
| Indexing | O(1) | O(1) | O(1) | O(1) |
| Use Case | General | Fixed data | Text | Numeric |
13. Real-World Examples (असली उपयोग)
Output:
| Cart | ['laptop', 'keyboard'] |
| Popped | 3 |
| Stack | [1, 2] |
| Dequeued | A |
| Queue | ['B', 'C'] |
| {'apple' | 3, 'banana': 2, 'cherry': 1} |
14. Common Pitfalls (सामान्य गलतियाँ)
15. Interview Questions (इंटरव्यू प्रश्न)
Q1: List और Tuple में क्या फर्क है?
Answer: List mutable होती है (change किया जा सकता है), Tuple immutable (fixed)। Tuples faster और less memory use करते हैं। Lists use करें जब data बदलना हो; Tuples जब data fixed हो (like coordinates)।
Q2: Python में list कैसे reverse करें?
Q3: List में duplicates remove कैसे करें?
Q4: Two lists को zip करना?
Q5: List को sort करना (custom key)?
Q6: Largest और smallest N elements?
Summary (सारांश)
| Topic | Key Point |
|---|---|
| Creation | [], list(), list(range(...)) |
| Indexing | 0-based, negative indexing supported |
| Slicing | [start:stop:step] |
| Mutability | Elements change/add/delete किए जा सकते हैं |
| Copy | = (reference), .copy() (shallow), deepcopy (deep) |
| Complexity | Access O(1), Search O(n), Sort O(n log n) |
| Unpacking | a, *b, c = list |
🎯 Practice: एक to-do list program बनाएं जिसमें add, remove, view, और search tasks हो।
⚠️ Common Mistakes (आम गलतियाँ)
Mistake 1: Using = for copying a list ❌
[1, 2, 3, 4, 5, 6]
✅ Fix:copy = original.copy()yacopy = original[:]use करें।
Mistake 2: Modifying list while iterating ❌
[1, 3, 5]
✅ Fix: Copy पर iterate करें:for n in nums[:]:या list comprehension use करें:nums = [n for n in nums if n % 2 != 0]
Mistake 3: Nested list with * operator ❌
[[5, 0, 0], [5, 0, 0], [5, 0, 0]]
✅ Fix: List comprehension use करें: grid = [[0] * 3 for _ in range(3)]Mistake 4: Using mutable default argument ❌
['a'] ['a', 'b']
✅ Fix:def add_item(item, lst=None):use करें और function body मेंif lst is None: lst = []
Mistake 5: Confusing append() with extend() ❌
[1, 2, 3, [4, 5, 6]] [1, 2, 3, 4, 5, 6]
Mistake 6: IndexError – accessing out of range index ❌
Index out of range!
Mistake 7: Using sort() vs sorted() confusion ❌
None [1, 1, 3, 4, 5] [1, 1, 3, 4, 5] [3, 1, 4, 1, 5]
✅ Key Takeaways (मुख्य बातें)
- 📌 List ordered और mutable होती है – elements का order maintain रहता है और change किया जा सकता है
- 📌 Heterogeneous data store कर सकते हैं – एक ही list में int, str, float, bool सब आ सकते हैं
- 📌 Indexing 0 से start होती है – negative indexing (
-1) से end से access करें - 📌 Slicing
[start:stop:step]– new list return करती है, original unchanged रहती है - 📌
=assignment copy नहीं बनाता –.copy(),[:], याcopy.deepcopy()use करें - 📌
append()single item add करता है,extend()iterable के सारे items add करता है - 📌 List comprehension traditional loop से faster और Pythonic है
- 📌 Time Complexity याद रखें – access O(1), search O(n), sort O(n log n), insert/delete O(n)
- 📌 Nested lists में shallow copy से inner lists share होती हैं –
deepcopy()use करें - 📌 List को iterate करते वक्त modify न करें – copy पर iterate करें या comprehension use करें
❓ FAQ (अक्सर पूछे जाने वाले प्रश्न)
Q1: List और Array में क्या difference है?
Answer: Python list heterogeneous data store करती है (mixed types), जबकि array.array sirf एक ही type का data store करती है। Arrays memory efficient होते हैं numerical data के लिए, लेकिन lists ज्यादा flexible हैं। NumPy arrays scientific computing के लिए best हैं।Q2: List में maximum कितने elements store हो सकते हैं?
Answer: Python lists का कोई hard limit नहीं है – sys.maxsize तक elements हो सकते हैं (64-bit system पर ~9.2 × 10¹⁸)। Practically, available RAM ही limit है।Q3: List comprehension और normal loop में कौन faster है?
Answer: List comprehension generally 30-50% faster होती है normal for loop से क्योंकि ये C level पर optimized implementation use करती है। लेकिन complex logic के लिए readability का ध्यान रखें।
Q4: del, remove(), और pop() में क्या difference है?
Answer: -del list[i]– index से delete करता है, कुछ return नहीं करता -list.remove(value)– first occurrence of value remove करता है -list.pop(i)– index से remove करके वो element return करता है -list.pop()– last element remove + return करता है (stack behavior)
Q5: List को reverse करने के कितने तरीके हैं?
Answer: तीन main तरीके: 1.list.reverse()– in-place, O(n), returns None 2.list[::-1]– new reversed list, O(n) extra space 3.list(reversed(list))– returns iterator, memory efficient
Q6: Empty list check करने का best way क्या है?
Answer: Pythonic way है direct truthiness check:
my_list = []
# ✅ Pythonic (recommended)
if not my_list:
print("List is empty")
# ❌ Non-Pythonic
if len(my_list) == 0:
print("List is empty")List is empty
Q7: sort() और sorted() में क्या अंतर है?
Answer:sort()in-place sorting करता है (original list modify हो जाती है, returnsNone)।sorted()new sorted list return करता है (original unchanged)।sorted()किसी भी iterable पर काम करता है,sort()सिर्फ lists पर।
Q8: List को thread-safe कैसे बनाएं?
Answer: Python lists thread-safe नहीं हैं। Multi-threading मेंthreading.Lock()use करें याqueue.Queueuse करें जो internally thread-safe है।
🎯 Interview Questions (विस्तृत इंटरव्यू प्रश्न)
Q1: Python List internally कैसे implement होती है?
Answer: Python list internally एक dynamic array of pointers है। ये contiguous memory block में object references (pointers) store करती है। जब list full हो जाती है तो over-allocation strategy use होती है (approximately 1.125x growth) ताकि हर append O(1) amortized रहे।
Q2: List comprehension vs map() + lambda – कौन better है?
Answer: List comprehension ज्यादातर cases में preferred है क्योंकि ये readable है और slightly faster है।map()तब useful है जब existing function directly apply करनी हो (जैसेmap(str, nums))। Lambda + map combination list comprehension से slower होती है।
['1', '2', '3', '4', '5']
Q3: Shallow copy और Deep copy में practical difference क्या है?
Answer: Shallow copy सिर्फ top-level elements copy करती है – nested mutable objects (like inner lists) share होते हैं। Deep copy recursively सब कुछ copy करती है। Nested structures (list of lists) में हमेशा copy.deepcopy() use करें।Q4: list.sort() कौन सा algorithm use करता है?
Answer: Python Timsort algorithm use करता है (Tim Peters द्वारा designed)। ये merge sort + insertion sort का hybrid है। Time complexity: Best O(n), Average/Worst O(n log n)। ये stable sort है (equal elements का order preserve होता है)।
Q5: List में element find करने के efficient तरीके क्या हैं?
Answer: - Unsorted list:inoperator – O(n) linear search - Sorted list:bisectmodule – O(log n) binary search - Frequent lookups: List कोsetमें convert करें – O(1) lookup
Found 7: True, at index: 3
Q6: List slicing internally कैसे काम करती है?
Answer: Slicing एक new list create करती है (shallow copy)।a[1:4]internallylist.__getitem__(slice(1, 4, None))call करती है। ये original list modify नहीं करती। Memory: O(k) extra space जहां k = stop - start।
Q7: *args और list unpacking कैसे related हैं?
Answer:*argsfunction में variable arguments accept करता है – internally एक tuple बनता है। List unpacking (*list) किसी भी iterable को expand करती है। दोनों PEP 3132 (extended unpacking) पर based हैं।
15 First: 10, Middle: [20, 30, 40], Last: 50
Q8: List memory optimization कैसे करें?
Answer: - Large homogeneous data के लिएarray.arrayया NumPy use करें - Generators use करें जब full list memory में load करना जरूरी न हो -__slots__use करें objects की list में -sys.getsizeof()से memory track करें
List memory: 8856 bytes Generator memory: 200 bytes
Q9: List को function argument के रूप में pass करने पर क्या होता है?
Answer: Python में lists pass by reference (actually pass by object reference) होती हैं। Function में list modify करने पर original list भी change हो जाती है। Agar original preserve करना है तो copy pass करें।
[1, 2, 3, 99] [1, 2, 3] [1, 2, 3, 99]
Q10: List vs Deque – कब कौन use करें?
Answer: - List: Random access (index), append/pop from end → O(1) - Deque: append/pop from both ends → O(1), but random access → O(n) - Queue/BFS implement करने के लिए collections.deque use करें, general purpose के लिए list[1, 2]
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Python Lists – Complete Guide.
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, lists
Related Python Master Course Topics