eitaa logo
پایتون برای شما
107 دنبال‌کننده
29 عکس
0 ویدیو
25 فایل
جایی برای یادگیری پایتون 👨‍💻👩‍💻 ارتباط با مدرس: @Ali_Reza_Noorbakhsh
مشاهده در ایتا
دانلود
🟣 نکات ریز و ترفندهای حرفه‌ای ⭐️ 1. بررسی وجود عنصر با in: برای چک کردن اینکه یه مقدار تو فهرست هست یا نه، از in استفاده کن. fruits = ["sib", "moz", "portoghal"] if "moz" in fruits: print("Moz darim! 🍌") 💡 نکته ریز: - دقت کن in برای فهرست‌های بزرگ ممکنه کند باشه. اگه نیاز به سرعت داری، از set به جای list استفاده کن. ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 2. کپی کردن فهرست: اگه مستقیم یه فهرست رو به متغیر جدید بدی، کپی نمی‌شه، بلکه فقط ارجاع می‌کنه! original = [1, 2, 3] bad_copy = original bad_copy[0] = 99 # original ham taghir mikone! [99, 2, 3] ✅ راه درست: از ()copy یا برش کامل [:] استفاده کن: original = [1, 2, 3] good_copy = original.copy() # ya: original[:] good_copy[0] = 99 # original: [1, 2, 3], good_copy: [99, 2, 3] 💡 نکته ریز: - اگه فهرستت شامل فهرست‌های دیگه‌ست (فهرست تودرتو)، از deepcopy تو ماژول copy استفاده کن: from copy import deepcopy nested = [[1, 2], [3, 4]] deep_copy = deepcopy(nested) ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 3. مرتب‌سازی فهرست: 🔸 sort(): فهرست رو به‌صورت مستقیم مرتب می‌کنه (تغییر درجا). 🔸 sorted(): یه فهرست جدید مرتب‌شده برمی‌گردونه. numbers = [3, 1, 4, 2] numbers.sort() # numbers: [1, 2, 3, 4] sorted_numbers = sorted([3, 1, 4, 2]) # sorted_numbers: [1, 2, 3, 4] 💡 نکته ریز: - برای مرتب‌سازی برعکس، از reverse=True استفاده کن: numbers.sort(reverse=True) # [4, 3, 2, 1] - برای مرتب‌سازی فهرست رشته‌ها یا اشیاء پیچیده، از پارامتر key استفاده کن: names = ["Ali", "zahra", "Babak"] names.sort(key=str.lower) # ["Ali", "Babak", "zahra"] ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 4. فهرست‌های تودرتو (Nested Lists): فهرست‌ها می‌تونن شامل فهرست‌های دیگه باشن، مثل ماتریس. matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix[1][2]) # Khoroji: 6 💡 نکته ریز: - برای دسترسی به عناصر تودرتو، مراقب ایندکس‌ها باش تا IndexError نگیری. - برای حلقه زدن تو فهرست تودرتو: for row in matrix: for item crusade print(item, end=" ") # 1 2 3 4 5 6 7 8 9 ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 5. ترکیب فشرده (List Comprehension): به جای حلقه‌های طولانی، از List Comprehension برای کد کوتاه و سریع استفاده کن. numbers = [1, 2, 3, 4] squares = [x**2 for x in numbers] # [1, 4, 9, 16] 💡 نکته ریز: - می‌تونی شرط هم اضافه کنی: even_squares = [x**2 for x in numbers if x % 2 == 0] # [4, 16] ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 6. بررسی خالی بودن فهرست: برای چک کردن خالی بودن، از if not list استفاده کن. my_list = [] if not my_list: print("List khalie! 📭") 💡 نکته ریز: - این روش برای هر شیء خالی‌شدنی (مثل رشته یا دیکشنری) هم کار می‌کنه. ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 7. شمارش و تعداد با count و len: 🔹 len: تعداد عناصر فهرست. 🔹 count: تعداد دفعات یه مقدار خاص. fruits = ["sib", "moz", "sib"] print(len(fruits)) # Khoroji: 3 print(fruits.count("sib")) # Khoroji: 2 ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 8. معکوس کردن فهرست: از ()reverse یا برش [1-::] برای معکوس کردن استفاده کن. numbers = [1, 2, 3] numbers.reverse() # [3, 2, 1] # ya numbers = numbers[::-1] ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 9. ترکیب فهرست‌ها با + یا extend: دو فهرست رو می‌تونی باهم ترکیب کنی: list1 = [1, 2] list2 = [3, 4] combined = list1 + list2 # [1, 2, 3, 4] # ya list1.extend(list2) 💡 نکته ریز: - دقت کن که + یه فهرست جدید می‌سازه، ولی extend فهرست اول رو تغییر می‌ده (بهینه‌تر برای فهرست‌های بزرگ). ⬟〰️⬟〰️⬟〰️⬟〰️⬟ ⭐️ 10. مدیریت خطا با try-except: موقع کار با ایندکس‌ها، ممکنه ارور بگیری. از try-except استفاده کن: try: print(fruits[10]) except IndexError: print("Indeks na-mojood! 🚫") 💯 @PythonForYou 🧑‍💻👩‍💻
🔴 نکات حرفه‌ای برای کار با فهرست‌ها 🔸 بهینه‌سازی حافظه: برای فهرست‌های خیلی بزرگ، از ژنراتورها یا numpy به جای فهرست استفاده کن. 🔹 خوانایی: اسم‌های معنی‌دار برای فهرست‌ها انتخاب کن (مثل scores به جای x). 🔸 تکرارها: اگه یه عنصر چندین بار تو فهرست هست و فقط یکی رو می‌خوای، از set استفاده کن: unique_fruits = list(set(["sib", "moz", "sib"])) # ["sib", "moz"] 🔹 بررسی نوع داده‌ها: تو فهرست‌های مخلوط، نوع داده رو با isinstance چک کن: mixed = [1, "sib", 3.14] for item in mixed: if isinstance(item, str): print(f"String: {item}") 💯 @PythonForYou 🧑‍💻👩‍💻
📢 مقایسه کامل متدهای حذف در فهرست‌ها (remove, pop, clear, del) 🐍 تو این پست قراره چهار ابزار قدرتمند برای حذف عناصر از فهرست‌ها در پایتون رو زیر ذره‌بین ببریم: remove(), pop(), clear()، و del. 😎 می‌خوایم کاربردهاشون، تفاوت‌هاشون، و نکات ریز حرفه‌ای رو با مثال‌های کاربردی بررسی کنیم. آماده‌اید؟ بریم شروع کنیم! 🚀 ⬟〰️⬟〰️⬟〰️⬟〰️⬟ 1️⃣ متد ()remove: حذف اولین نمونه از یه مقدار ♦️ کاربرد: وقتی می‌خوای یه مقدار خاص (نه ایندکس) رو از فهرست حذف کنی، ()remove اولین نمونه از اون مقدار رو پیدا و حذف می‌کنه. 📝 سینتکس: my_list.remove(value) # Hazf avalin namone az value ✨ مثال: fruits = ["sib", "moz", "sib", "portoghal"] fruits.remove("sib") # Hazf avalin "sib" print(fruits) # Khoroji: ["moz", "sib", "portoghal"] 💡 نکات ریز: - اگه مقدار تو فهرست نباشه، ارور ValueError می‌گیره. برای جلوگیری: if "anar" in fruits: fruits.remove("anar") else: print("Anar nist! 🚫") - فقط اولین نمونه رو حذف می‌کنه. اگه بخوای همه نمونه‌ها رو حذف کنی، باید حلقه بزنی: while "sib" in fruits: fruits.remove("sib") - برای فهرست‌های بزرگ، ()remove ممکنه کند باشه چون باید کل فهرست رو اسکن کنه. - فقط با مقدار کار می‌کنه، نه ایندکس. ⬟〰️⬟〰️⬟〰️⬟〰️⬟ 2️⃣ متد ()pop: حذف و برگردوندن عنصر با ایندکس ♦️ کاربرد: یه عنصر رو با ایندکسش حذف می‌کنه و مقدار حذف‌شده رو برمی‌گردونه. اگه ایندکس ندی، آخرین عنصر رو حذف می‌کنه. 📝 سینتکس: my_list.pop(index) # Hazf onsor ba index (pishfarz: akharin onsor) ✨ مثال: fruits = ["sib", "moz", "portoghal"] last_fruit = fruits.pop() # Hazf akharin onsor print(last_fruit) # Khoroji: portoghal print(fruits) # Khoroji: ["sib", "moz"] # Ya ba index second_fruit = fruits.pop(1) # Hazf "moz" print(second_fruit) # Khoroji: moz print(fruits) # Khoroji: ["sib"] 💡 نکات ریز: - اگه ایندکس اشتباه بدی (مثلاً pop(10) تو فهرست 3 تایی)، ارور IndexError می‌گیره. - چون مقدار حذف‌شده رو برمی‌گردونه، برای کارهایی مثل پشته (stack) عالیه: stack = [1, 2, 3] top = stack.pop() # 3 ro migire va hazf mikone - اگه فهرست خالی باشه و pop() بزنی، IndexError می‌گیره. - سریع‌تر از remove() برای حذف با ایندکس، چون مستقیم به ایندکس دسترسی داره. ⬟〰️⬟〰️⬟〰️⬟〰️⬟ 3️⃣ متد ()clear: خالی کردن کل فهرست ♦️ کاربرد: همه عناصر فهرست رو حذف می‌کنه، ولی خود متغیر فهرست می‌مونه (خالی). 📝 سینتکس: my_list.clear() # Hazf hame onsorha ✨ مثال: fruits = ["sib", "moz", "portoghal"] fruits.clear() print(fruits) # Khoroji: [] 💡 نکات ریز: - برعکس del my_list، متغیر فهرست همچنان وجود داره، فقط خالیه. - برای وقتی مناسبه که می‌خوای فهرست رو نگه داری و بعداً دوباره پر کنی. - خیلی سریع و بهینه‌ست، چون نیازی به بررسی ایندکس یا مقدار نداره. - هیچ مقداری برنمی‌گردونه. ⬟〰️⬟〰️⬟〰️⬟〰️⬟ 4️⃣ دستور del: حذف انعطاف‌پذیر ♦️ کاربرد: یه دستور کلی پایتونه که می‌تونه یه عنصر، یه بازه (slice)، یا کل فهرست رو حذف کنه. 📝 سینتکس: del my_list[index] # Hazf yek onsor del my_list[start:end] # Hazf yek baze del my_list # Hazf tamame list ✨ مثال: fruits = ["sib", "moz", "portoghal", "anar"] del fruits[1] # Hazf "moz" print(fruits) # Khoroji: ["sib", "portoghal", "anar"] del fruits[0:2] # Hazf az index 0 ta 1 print(fruits) # Khoroji: ["anar"] del fruits # Hazf kole list # print(fruits) # Error: 'fruits' is not defined 💡 نکات ریز: - اگه ایندکس یا برش اشتباه بدی، ارور IndexError می‌گیره. - برعکس ()pop، مقدار حذف‌شده رو برنمی‌گردونه. - می‌تونه روی اشیاء دیگه (مثل دیکشنری یا متغیر) هم کار کنه: my_dict = {"name": "ali"} del my_dict["name"] - برای حذف کل فهرست، حافظه رو کامل آزاد می‌کنه (برعکس ()clear که فقط خالی می‌کنه). - تو حلقه‌ها با احتیاط استفاده کن، چون حذف با del ممکنه ایندکس‌ها رو به‌هم بریزه: numbers = [1, 2, 3, 4] for i in range(len(numbers)): del numbers[i] # Bad idea! IndexError 💯 @PythonForYou 🧑‍💻👩‍💻 👇 ادامه در پست بعد 👇
📌 مثال ترکیبی: 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 🧑‍💻👩‍💻 👇 ادامه در پست بعد 👇
✅ مثال‌های کاربردی ترکیبی 💠 مدیریت سبد خرید: cart = ["sib", "moz", "sib", "portoghal"] cart.remove("sib") # Hazf avalin sib item = cart.pop(0) # Hazf va gereftane moz print(f"Item hazf shode: {item}") del cart[0:1] # Hazf yek onsor dige print(cart) # Khoroji: ["portoghal"] cart.clear() # Khali kardane sabad print(cart) # Khoroji: [] —-—-—-—-—-—-—-—-—-—-— 💠 فیلتر کردن داده‌های نامعتبر: data = ["ali", "", "zahra", "", "babak"] try: while "" in data: data.remove("") # Hazf khaliha except ValueError: pass print(data) # Khoroji: ["ali", "zahra", "babak"] —-—-—-—-—-—-—-—-—-—-— 💠 مدیریت موجودی انبار: stock = ["sib", "moz", "portoghal", "anar"] if stock: item = stock.pop() # Hazf akharin item print(f"Item bargiri shod: {item}") del stock[0:2] # Hazf do item aval print(stock) # Khoroji: ["anar"] 💯 @PythonForYou 🧑‍💻👩‍💻
📢 تسلط بر فهرست‌ها (بدون متدهای حذف و اضافه) 🐍 تو این پست قراره عمیق‌تر به فهرست‌ها (Lists) در پایتون نگاه کنیم و روی تکنیک‌ها و متدهایی تمرکز کنیم که فراتر از اضافه و حذف عنصرن. 😎 از چرخش فهرست و حلقه‌ها گرفته تا برش‌ها، آمار ساده، و نکات تورفتگی، همه‌چیز اینجاست! 🚀 بریم شروع کنیم! 💯 @PythonForYou 🧑‍💻👩‍💻
اینجا روی متدهایی تمرکز می‌کنیم که برای مدیریت، مرتب‌سازی، و تحلیل فهرست‌ها استفاده می‌شن. 🔰 index(value): ایندکس اولین نمونه از یه مقدار رو برمی‌گردونه. fruits = ["sib", "moz", "portoghal", "sib"] print(fruits.index("sib")) # Khoroji: 0 —-—-—-—-—-—-—-—-—-—-— 🔰 count(value): تعداد دفعات یه مقدار تو فهرست رو برمی‌گردونه. print(fruits.count("sib")) # Khoroji: 2 —-—-—-—-—-—-—-—-—-—-— 🔰 sort(key=None, reverse=False): فهرست رو به‌صورت درجا مرتب می‌کنه. numbers = [3, 1, 4, 2] numbers.sort() print(numbers) # Khoroji: [1, 2, 3, 4] numbers.sort(reverse=True) print(numbers) # Khoroji: [4, 3, 2, 1] —-—-—-—-—-—-—-—-—-—-— 🔰 reverse(): ترتیب فهرست رو معکوس می‌کنه (درجا). numbers = [1, 2, 3, 4] numbers.reverse() print(numbers) # Khoroji: [4, 3, 2, 1] —-—-—-—-—-—-—-—-—-—-— 🔰 copy(): یه کپی سطحی از فهرست می‌سازه. fruits = ["sib", "moz"] fruits_copy = fruits.copy() fruits_copy[0] = "portoghal" print(fruits) # Khoroji: ["sib", "moz"] print(fruits_copy) # Khoroji: ["portoghal", "moz"] 💯 @PythonForYou 🧑‍💻👩‍💻
⭐️ تکنیک‌های پیشرفته و نکات ریز 1️⃣ چرخش درون کل یک فهرست 🔸 چرخش درجا یعنی جابه‌جایی عناصر بدون ساخت فهرست جدید. ✨ مثال چرخش کامل: numbers = [1, 2, 3, 4] numbers.reverse() print(numbers) # Khoroji: [4, 3, 2, 1] ✨ مثال چرخش به تعداد خاص (2 خانه به چپ): numbers = [1, 2, 3, 4] k = 2 numbers[:] = numbers[k:] + numbers[:k] print(numbers) # Khoroji: [3, 4, 1, 2] —-—-—-—-—-—-—-—-—-—-— 2️⃣ نگاهی دقیق‌تر به حلقه‌ی for حلقه‌های for برای پیمایش فهرست‌ها عالی‌ان. 🔹 پیمایش مستقیم: fruits = ["sib", "moz", "portoghal"] for fruit in fruits: print(f"Mive: {fruit}") # Khoroji: # Mive: sib # Mive: moz # Mive: portoghal 🔹 با ایندکس و enumerate: for i, fruit in enumerate(fruits): print(f"Index {i}: {fruit}") —-—-—-—-—-—-—-—-—-—-— 3️⃣ انجام کارهای بیشتر بر روی فهرست‌ها با حلقه‌ها می‌تونی کارهای پیچیده‌تری مثل فیلتر کردن یا تبدیل انجام بدی. ✨ مثال فیلتر کردن: numbers = [1, 2, 3, 4] evens = [num for num in numbers if num % 2 == 0] print(evens) # Khoroji: [2, 4] —-—-—-—-—-—-—-—-—-—-— 4️⃣ انجام کارهایی پس از حلقه‌ی for بعد از حلقه، می‌تونی نتایج رو جمع‌بندی کنی. ✨ مثال جمع و میانگین: numbers = [1, 2, 3, 4] total = sum(numbers) print(f"Jame: {total}, Miyangin: {total / len(numbers)}") # Khoroji: Jame: 10, Miyangin: 2.5 —-—-—-—-—-—-—-—-—-—-— 5️⃣ پیشگیری از خطاهای تورفتگی 🔸 تورفتگی فراموش‌شده: numbers = [1, 2, 3] for num in numbers: print(num) # IndentationError ✨ درست: for num in numbers: print(num) 🔸 فراموشی تورفتگی خطوط اضافی: for num in numbers: print(num) print("Payan") # Bayad kharej az halghe bashe 🔸 تورفتگی غیرضروری: numbers = [1, 2, 3] print(numbers) # IndentationError 🔸 تورفتگی غیرضروری پس از حلقه: for num in numbers: print(num) print("Ghalat!") # In to halghe-st 🔸 فراموشی دو نقطه (:): for num in numbers # SyntaxError print(num) —-—-—-—-—-—-—-—-—-—-— 6️⃣ ساخت فهرست‌های عددی 🔹 استفاده از range(): numbers = list(range(1, 6)) # [1, 2, 3, 4, 5] print(numbers) 🔹 ساخت فهرست با ()range: even_numbers = list(range(2, 11, 2)) # [2, 4, 6, 8, 10] print(even_numbers) 🔹 آمار ساده با فهرست اعداد: numbers = [3, 1, 4, 2] print(f"Koochik: {min(numbers)}") # Khoroji: Koochik: 1 print(f"Bozorg: {max(numbers)}") # Khoroji: Bozorg: 4 print(f"Jame: {sum(numbers)}") # Khoroji: Jame: 10 print(f"Miyangin: {sum(numbers) / len(numbers)}") # Khoroji: Miyangin: 2.5 🔹 خلاصه فهرست: cubes = [x**3 for x in range(1, 5)] # [1, 8, 27, 64] print(cubes) —-—-—-—-—-—-—-—-—-—-— 7️⃣ کار با بخشی از فهرست (برش‌ها) 🔸 برش زدن: numbers = [1, 2, 3, 4, 5] print(numbers[1:4]) # Khoroji: [2, 3, 4] print(numbers[::2]) # Khoroji: [1, 3, 5] print(numbers[::-1]) # Khoroji: [5, 4, 3, 2, 1] 🔸 حرکت درون برش: slice = numbers[1:4] for num in slice: print(num) # 2, 3, 4 numbers[1:4] = [20, 30, 40] print(numbers) # Khoroji: [1, 20, 30, 40, 5] 🔸 نسخه‌برداری: fruits = ["sib", "moz"] fruits_copy = fruits[:] fruits_copy[0] = "portoghal" print(fruits) # Khoroji: ["sib", "moz"] print(fruits_copy) # Khoroji: ["portoghal", "moz"] 💯 @PythonForYou 🧑‍💻👩‍💻