📌
مثال ترکیبی:
fruits = ["sib", "moz", "sib", "portoghal"]
fruits.remove("sib") # Hazf avalin "sib" -> ["moz", "sib", "portoghal"]
last =
fruits.pop() # Hazf va bargardandane "portoghal" -> ["moz", "sib"]
del fruits[0] # Hazf "moz" -> ["sib"]
fruits.clear() # Khali kardane list -> []
print(fruits) # Khoroji: []
⬟〰️⬟〰️⬟〰️⬟〰️⬟
🟠 نکات حرفهای و ریز برای کار با این متدها
1️⃣ انتخاب ابزار مناسب:
- اگه مقدار خاصی داری (مثل "sib")، از ()remove استفاده کن.
- اگه به ایندکس دسترسی داری یا میخوای مقدار حذفشده رو داشته باشی، از ()pop استفاده کن.
- اگه فقط میخوای فهرست رو خالی کنی، ()clear بهترینه.
- اگه میخوای انعطافپذیر باشی (حذف یه عنصر، برش، یا کل فهرست)، del عالیه.
—-—-—-—-—-—-—-—-—-—-—
2️⃣ مدیریت ارورها با try-except:
برای remove() و del همیشه احتمال ارور رو در نظر بگیر:
fruits = ["sib", "moz"]
try:
fruits.remove("anar")
except ValueError:
print("Anar nist! 🚫")
try:
del fruits[10]
except IndexError:
print("Indeks na-mojood! 🚫")
—-—-—-—-—-—-—-—-—-—-—
3️⃣ حذف چندگانه با شرط:
- اگه میخوای چندتا عنصر رو بر اساس شرط حذف کنی، به جای حلقه با remove() یا del، از List Comprehension استفاده کن که ایمنتره:
numbers = [1, 2, 3, 4, 5]
numbers = [x for x in numbers if x % 2 != 0] # Hazf zojha
print(numbers) # Khoroji: [1, 3, 5]
—-—-—-—-—-—-—-—-—-—-—
4️⃣ عملکرد در فهرستهای بزرگ:
🔸
remove(): برای فهرستهای بزرگ کندتره، چون باید کل فهرست رو اسکن کنه.
🔸
pop(): برای حذف از آخر فهرست خیلی سریعه (O(1))، ولی برای ایندکسهای وسط کندتره (O(n)).
🔸
clear(): سریعترین برای خالی کردن فهرست.
🔸
del: برای حذف برشها یا کل فهرست بهینهست، ولی برای حذف تکی ممکنه از pop() کندتر باشه.
—-—-—-—-—-—-—-—-—-—-—
5️⃣ حذف در فهرستهای تودرتو:
برای فهرستهای تودرتو، del و pop() بهترن چون میتونی مستقیم به ایندکس دسترسی داشته باشی:
matrix = [[1, 2, 3], [4, 5, 6]]
del matrix[0][1] # Hazf 2
print(matrix) # Khoroji: [[1, 3], [4, 5, 6]]
—-—-—-—-—-—-—-—-—-—-—
6️⃣ تفاوت حافظه:
🔸
clear() فهرست رو خالی میکنه ولی متغیر میمونه.
🔸
del my_list کل متغیر رو از حافظه پاک میکنه، که برای آزادسازی حافظه تو برنامههای سنگین بهتره.
big_list = [0] * 1000000
del big_list # Hافظه ro kamel azad mikone
—-—-—-—-—-—-—-—-—-—-—
7️⃣ حذف ایمن در حلقه:
حذف با remove() یا del تو حلقه روی فهرست ممکنه ایندکسها رو بههم بریزه:
fruits = ["sib", "moz", "sib"]
for f in fruits: # Bad idea!
fruits.remove(f) # IndexError ya natije ghalat
✅ راه درست: از حلقه معکوس یا List Comprehension استفاده کن:
fruits = ["sib", "moz", "sib"]
fruits = [f for f in fruits if f != "sib"]
print(fruits) # Khoroji: ["moz"]
💯 @PythonForYou 🧑💻👩💻
👇 ادامه در پست بعد 👇