Lists
List Python ka sabse common data structure hai — [] se banti hai, dynamically resizable hai (C++ ke vector jaisa), aur DIFFERENT types ki values ek saath rakh sakti hai (C/Java ke arrays ke ulat, jo sirf ek type allow karte hain).
Common operations: append() (end mein add), remove() (value se remove), pop() (index se remove aur return), len() (size), aur slicing (list[1:3]) — ek range ka sub-list nikalna, bahut powerful feature.
fruits = ["apple", "banana", "cherry"]
fruits.append("date") # end mein add
print(fruits) # ['apple', 'banana', 'cherry', 'date']
fruits.remove("banana") # value se remove
print(len(fruits)) # 3
print(fruits[0]) # "apple"
print(fruits[-1]) # "date" — negative index = end se
print(fruits[0:2]) # ['apple', 'cherry'] — slicing- [] se list banti hai, dynamically resizable
- Different types ek saath rakh sakti hai
- Negative indexing (-1 = last) aur slicing (list[1:3]) powerful features
Slicing syntax list[start:stop:step] bahut powerful hai — negative indices, step values (jaise har doosra element), aur list ko reverse karna sab isi se ho jaata hai.
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:5]) # [2, 3, 4]
print(nums[::2]) # [0, 2, 4, 6, 8] — har doosra element
print(nums[::-1]) # reversed list!
print(nums[-3:]) # [7, 8, 9] — last 3 elementssort() list ko in-place modify karta hai (original badal jaati hai, kuch return nahi karta). sorted() ek NAYI sorted list return karta hai, original ko touch nahi karta — kisi bhi iterable (list, tuple, string) par kaam karta hai.
nums = [3, 1, 4, 1, 5]
nums.sort() # original modify hoti hai
print(nums) # [1, 1, 3, 4, 5]
nums2 = [3, 1, 4]
result = sorted(nums2) # naya list return hota hai
print(nums2) # [3, 1, 4] — unchanged!
print(result) # [1, 3, 4]