eitaa logo
پایتون برای شما
107 دنبال‌کننده
29 عکس
0 ویدیو
25 فایل
جایی برای یادگیری پایتون 👨‍💻👩‍💻 ارتباط با مدرس: @Ali_Reza_Noorbakhsh
مشاهده در ایتا
دانلود
❓ چرا ژنراتورها؟ مزایا و کاربردها 🤔 🔸 صرفه‌جویی تو حافظه: ژنراتورها مقادیر رو یکی‌یکی تولید می‌کنن، نه یه‌جا: import sys gen = (x for x in range(1000000)) print(sys.getsizeof(gen)) # ~104 bytes lst = [x for x in range(1000000)] print(sys.getsizeof(lst)) # ~9000000 bytes 🔸 پشتیبانی از داده‌های بی‌نهایت: می‌تونی دنباله‌های نامحدود بسازی: def infinite_numbers(): num = 0 while True: yield num num += 1 gen = infinite_numbers() for _ in range(5): print(next(gen)) # Khoroji: 0, 1, 2, 3, 4 🔸 ترکیب با توابع داخلی: ژنراتورها با sum، max و غیره خوب کار می‌کنن: print(sum(x for x in range(100))) # Khoroji: 4950 💯 @PythonForYou 🧑‍💻👩‍💻
4️⃣ نکات ریز و ترفندهای حرفه‌ای 🔸 استفاده از ()next: برای گرفتن مقدار بعدی ژنراتور: gen = (x**2 for x in range(3)) print(next(gen)) # Khoroji: 0 print(next(gen)) # Khoroji: 1 print(next(gen)) # Khoroji: 4 🔸 مدیریت خطای StopIteration: try: gen = (x for x in range(2)) print(next(gen)) print(next(gen)) print(next(gen)) except StopIteration: print("Generator tamoom shod! 🚫") 🔸 ترکیب با ()range: evens_gen = (x for x in range(0, 10, 2)) print(list(evens_gen)) # Khoroji: [0, 2, 4, 6, 8] 🔸 ژنراتورهای تودرتو با yield from: def nested_generator(): yield from [1, 2, 3] yield from [4, 5, 6] for num in nested_generator(): print(num) # Khoroji: 1, 2, 3, 4, 5, 6 🔸 استفاده تو pipeline داده: برای فیلتر کردن یا تبدیل داده‌ها به‌صورت زنجیره‌ای: def filter_evens(): for num in range(10): if num % 2 == 0: yield num for num in filter_evens(): print(f"Zoj: {num}") # Khoroji: Zoj: 0, Zoj: 2, Zoj: 4, Zoj: 6, Zoj: 8 💯 @PythonForYou 🧑‍💻👩‍💻
5️⃣ مثال‌های کاربردی 🔸 تولید اعداد اول: def is_prime(n): if n < 2: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True def prime_generator(limit): for num in range(limit): if is_prime(num): yield num for prime in prime_generator(20): print(prime) # Khoroji: 2, 3, 5, 7, 11, 13, 17, 19 🔸 ژنراتور برای داده‌های بزرگ: def large_data_generator(): for i in range(1000000): yield i * 2 gen = large_data_generator() for _ in range(5): print(next(gen)) # Khoroji: 0, 2, 4, 6, 8 🔸 فیلتر کردن با ژنراتور: numbers = [1, 2, 3, 4, 5, 6] odds_gen = (x for x in numbers if x % 2 != 0) print(list(odds_gen)) # Khoroji: [1, 3, 5] —-—-—-—-—-—-—-—-—-—-— 6️⃣ نکات حرفه‌ای 🔸 صرفه‌جویی در حافظه: همیشه ژنراتورها رو به فهرست ترجیح بده برای داده‌های بزرگ، مگر اینکه واقعاً به فهرست نیاز داشته باشی. 🔸 خوانایی کد: اسم‌های معنی‌دار برای ژنراتورها انتخاب کن (مثل evens_gen به جای g). 🔸 ترکیب با itertools: برای کارهای پیچیده‌تر، از ماژول itertools استفاده کن: from itertools import islice gen = (x**2 for x in range(100)) print(list(islice(gen, 5))) # Khoroji: [0, 1, 4, 9, 16] 🔸 مدیریت پایان ژنراتور: همیشه آماده خطای StopIteration باش یا از حلقه for استفاده کن که خودش این خطا رو مدیریت می‌کنه. 💯 @PythonForYou 🧑‍💻👩‍💻
✨ موفقیت هنر به تاخیر انداختن لذت هاست 💯 @PythonForYou 🧑‍💻👩‍💻
📢 همه‌چیز درباره فهرست‌ها (Lists) + نکات حرفه‌ای 🐍 در ادامه قراره غوغا کنیم و همه‌چیز درباره فهرست‌ها (Lists) در پایتون رو یاد بگیریم! 😎 فهرست‌ها یکی از پرکاربردترین ابزارهای پایتونن که تو هر پروژه‌ای به کار میان. از تعریف ساده تا ترفندهای حرفه‌ای و نکات ریز، همه‌چیز اینجاست! 🚀 بریم شروع کنیم! 💯 @PythonForYou 🧑‍💻👩‍💻
فهرست (List) چیه؟ 🤔 فهرست یه مجموعه مرتب از داده‌هاست که می‌تونه هر نوع داده‌ای (عدد، رشته، حتی فهرست دیگه!) رو نگه داره. فهرست‌ها قابل تغییر (mutable) هستن، یعنی می‌تونی بعد از تعریف، اونا رو عوض کنی. ✅ سینتکس (نحوه تعریف): my_list = [1, 2, "ali", True, 3.14] # ya empty_list = [] ⬟〰️⬟〰️⬟〰️⬟〰️⬟ 💡 ویژگی‌ها: - تو کروشه [] تعریف می‌شن. - می‌تونی داده‌های مختلف (int, str, bool, ...) رو باهم ذخیره کنی. - ترتیب دارن (ایندکس از 0 شروع می‌شه). - می‌تونی عناصر رو اضافه، حذف یا تغییر بدی. 💯 @PythonForYou 🧑‍💻👩‍💻