دوستان،
در این شرایط خاص، مراقب خودتان باشید.❤️
- اگر انرژی کم دارید، طبیعی است:)
- اگر تمرکز ندارید، تقصیر شما نیست=)
- اگر کارایی سابق را ندارید، خودتان را سرزنش نکنید;)
به یاد داشته باشید:
"این روزها هم گذراست...
و شما تنها نیستید."
#مراقب_همدیگر_باشیم
✔️ ساختار داده درخت به زبان ساده
درخت چیست؟
یک ساختار داده سلسله مراتبی شبیه درخت واقعی است که از:
- گرهها (Nodes): خانههای حاوی داده
- یالها (Edges): خطوط اتصال بین گرهها
چرا درخت مهمه؟
- نمایش دادههای سلسله مراتبی مثل:
- ساختار فایلها در کامپیوتر 📂
- نمودار سازمانی شرکت 👨💼
- رابطه والد-فرزند در دیتابیس 🗄
- پایهی الگوریتمهای پیشرفته
- سرعت بالا در جستجو و مرتبسازی
انواع اصلی درخت
1️⃣ درخت دودویی (Binary Tree)
- هر گره حداکثر ۲ فرزند: چپ و راست
class Node:
def init(self, data):
self.left = None
self.right = None
self.data = data
2️⃣ درخت جستجوی دودویی (BST)
- مقدار فرزند چپ < والد < فرزند راست
- جستجو مثل بازی "حدس عدد":
def search(root, target):
if not root: return False
if root.data == target: return True
if target < root.data:
return search(root.left, target)
return search(root.right, target)
3️⃣ درخت AVL
- نسخهی متعادلشدهی BST
- خودش رو با چرخشها متعادل میکنه ⚖️
مثال کاربردی: سیستم فایل
📁 Documents/
├── 📁 Projects/
│ ├── 📄 report.pdf
│ └── 📁 Code/
├── 📁 Images/
│ └── 🖼 photo1.jpg
└── 📄 notes.txt
چه زمانی از درخت استفاده کنیم؟
- وقتی دادهها رابطهی سلسله مراتبی دارن
- نیاز به جستجوی سریع دارید (مثل دیکشنری)
- میخواین دادهها رو به صورت مرتبشده نگه دارید
> "درختها پل بین ساختارهای خطی ساده و پایگاهدادههای پیشرفته هستند!"
✔️ ماژول typer (برای ساخت CLI حرفهای)
📌 هدف ماژول typer:
- ساخت ابزارهای Command Line (CLI) به سادگی و با Type Hints.
- جایگزین مدرن و آسان برای argparse و click.
- مناسب برای اتوماسیون، اسکریپتنویسی و برنامههای کاربردی.
هدف مثال:
- نشان میدهد چطور با ۴ خط کد یک CLI تعاملی بسازید!
- آموزش استفاده از آرگومانهای اجباری/اختیاری و Type Hints.
#typer | @LearnPythonIcy
✔️ مثال کاربردی با ماژول
toml🔹 کاربرد اصلی ماژول
tomlماژول
tomlدر پایتون برای کار با فایلهای پیکربندی با فرمت TOML طراحی شده است. فرمت TOML (مخفف *Tom's Obvious Minimal Language*) یک فرمت خوانا برای انسان و ماشین است که مخصوصاً برای فایلهای تنظیمات محبوب است. 🔸 مقایسه با JSON/YAML: - خوانایی بالاتر نسبت به JSON (مخصوصاً برای دادههای پیچیده). - سادهتر از YAML (بدان پیچیدگیهای فاصله و تو رفتگی). - استاندارد جدید پایتون برای تنظیمات پروژهها. 🔹 چرا TOML بهتر از JSON برای تنظیمات؟ - پشتیبانی از کامنت (برخلاف JSON). - نیاز به کوتیشن کمتر (مثلاً برای کلیدها). - خوانایی نزدیک به زبان طبیعی.
آموزش پایتون
✔️ مثال کاربردی با ماژول toml 🔹 کاربرد اصلی ماژول toml ماژول toml در پایتون برای کار با فایلهای
import toml # pip install toml
# ایجاد یک دیکشنری و ذخیره آن به فرمت TOML
config = {
"database": {
"host": "localhost",
"port": 5432,
"username": "admin",
"active": True
},
"settings": {
"debug_mode": False,
"max_connections": 100
}
}
# تبدیل دیکشنری به رشته TOML
toml_str = toml.dumps(config)
print("TOML String:\n", toml_str)
# نوشتن در فایل
with open("config.toml", "w") as f:
toml.dump(config, f)
# خواندن از فایل
with open("config.toml", "r") as f:
loaded_config = toml.load(f)
print("\nLoaded Config:", loaded_config)
✔️ ماژول functools یکی از ماژولهای استاندارد پایتون است که ابزارهایی برای کار با توابع (functions) و callableها فراهم میکند. این ماژول بیشتر برای برنامهنویسی تابعی (functional programming) و کَش کردن، مرتبسازی، و ترکیب توابع استفاده میشود.
---
📦 کاربردهای اصلی functools
در ادامه مهمترین ابزارها و دکوراتورهای این ماژول را توضیح میدهم:
---
1. 🔁 @lru_cache و @cache
برای کَش کردن نتایج توابع:
python
from functools import lru_cache
@lru_cache(maxsize=128)
def slow_function(x):
print("Running...")
return x * 2
@lru_cache(maxsize=None) = بدون محدودیت → مشابه @cache (در پایتون 3.9+)
مناسب برای توابعی با محاسبهی سنگین که بارها با ورودیهای تکراری فراخوانی میشوند.
---
2. 🪝 @wraps
برای حفظ متادیتا (مثل name, doc) هنگام نوشتن دکوراتورهای سفارشی:
python
from functools import wraps
def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("Before call")
return func(*args, **kwargs)
return wrapper
---
3. 🧩 partial
برای ساختن نسخهای از یک تابع با برخی آرگومانهای پیشفرض پرشده:
python
from functools import partial
def power(base, exponent):
return base ** exponent
square = partial(power, exponent=2)
print(square(4)) # 16
---
4. 🧮 cmp_to_key
برای تبدیل توابع مقایسهای (قدیمی) به کلید قابل استفاده در sorted():
python
from functools import cmp_to_key
def compare(a, b):
return a - b
sorted_list = sorted([5, 2, 9], key=cmp_to_key(compare))
---
5. 🧠 reduce
برای کاهش لیستی از مقادیر به یک مقدار واحد (مثل جمع، ضرب، ...):
python
from functools import reduce
result = reduce(lambda x, y: x + y, [1, 2, 3, 4])
print(result) # 10
> 🔸 در پایتون 3، reduce از ماژول functools آورده میشود (در پایتون 2 در builtin بود).
---
📌 لیست دیگر توابع مفید در functools
تابع یا کلاس توضیح
total_ordering
ساخت مقایسه کامل از فقط چند متد
singledispatch
تعریف تابعی که بر اساس نوع آرگومان رفتار متفاوت دارد
update_wrapper
مثل @wraps برای انتقال متادیتا
cached_property
مثل property ولی با کش کردن نتیجه
---
✅ مثال ترکیبی
python
from functools import lru_cache, partial
@lru_cache(maxsize=None)
def factorial(n):
return 1 if n == 0 else n * factorial(n - 1)
triple = partial(pow, exponent=3)
# خطا! چون pow آرگومان keyword نمیپذیرد
#functools | @LearnPythonIcy
✔️ طبقهبندی سرطان پستان با PCA و رگرسیون لجستیک
این کد در دو مرحله، طبقهبندی روی دادههای سرطان پستان انجام میدهد:
⤵️ مرحله اول
1. دادههای سرطان پستان از sklearn بارگیری میشود.
2. دادهها به مجموعههای آموزش و آزمون تقسیم میشوند.
3. یک مدل رگرسیون لجستیک آموزش داده میشود.
4. دقت مدل روی دادههای آموزش و آزمون محاسبه و چاپ میشود.
⤵️ مرحله دوم
1. همان دادهها با StandardScaler نرمالسازی میشوند.
2. با استفاده از PCA بعد دادهها به 2 مولفه اصلی کاهش مییابد.
3. مجدداً دادهها تقسیم و مدل رگرسیون لجستیک آموزش داده میشود.
4. دقت مدل جدید محاسبه و چاپ میشود.
هدف مقایسه عملکرد مدل قبل و بعد از کاهش ابعاد با PCA است. این کد معمولاً برای نمایش تأثیر پیشپردازش داده و کاهش ابعاد بر عملکرد مدلهای یادگیری ماشین استفاده میشود.
👇کد پست بعدی
#pandas | #sklearn | #load_breast_cancer | @LearnPythonIcy
import pandas as pd
from sklearn.datasets import load_breast_cancer
(x, y) = load_breast_cancer(return_X_y= True)
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test= train_test_split(x, y,random_state=0)
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(random_state=0)
model.fit(x_train, y_train)
from sklearn.metrics import accuracy_score
print("Train Accuracy", accuracy_score(y_train, model.predict(x_train)))
print("Test Accuracy", accuracy_score(y_test, model.predict(x_test)))
import pandas as pd
from sklearn.datasets import load_breast_cancer
(x, y) = load_breast_cancer(return_X_y= True)
from sklearn.preprocessing import StandardScaler
x = StandardScaler().fit(x).transform(x)
from sklearn.decomposition import PCA
pca= PCA(n_components=2).fit(x)
x = pca.transform(x)
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test= train_test_split(x, y,random_state=0)
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(random_state=0)
model.fit(x_train, y_train)
from sklearn.metrics import accuracy_score
print("Train Accuracy", accuracy_score(y_train, model.predict(x_train)))
print("Test Accuracy", accuracy_score(y_test, model.predict(x_test)))
✔️ پروژههای پایتون از مبتدی تا پیشرفته!
اگر میخواهید پایتون را به صورت عملی یاد بگیرید، بهترین راه ساختن پروژههای واقعی است! در این پست ایدههایی از ساده تا حرفهای برای شما آماده کردهام:
🔹 سطح مبتدی (آشنایی با مبانی پایتون)
1️⃣ ماشین حساب ساده - عملیات پایه ریاضی
2️⃣ تبدیل واحد (دما، وزن، طول) - مثل سانتیگراد به فارنهایت
3️⃣ بازی حدس عدد - کامپیوتر یک عدد تصادفی انتخاب میکند و کاربر باید حدس بزند
4️⃣ لیست کارها (To-Do List) - افزودن، حذف و نمایش تسکها
🔸 سطح متوسط (کار با فایلها، کتابخانهها و دادهها)
5️⃣ مدیریت مخاطبان (دفترچه تلفن) - ذخیره و بازیابی اطلاعات از فایل
6️⃣ وباسکرپر ساده - استخراج داده از یک صفحه وب با
requestsو
BeautifulSoup7️⃣ پیشبینی آب و هوا - استفاده از APIهای رایگان مثل OpenWeatherMap 8️⃣ ربات تلگرام ساده - پاسخگویی خودکار با کتابخانه
python-telegram-bot🔺 سطح پیشرفته (پروژههای واقعی و پیچیده) 9️⃣ سیستم رزرو بلیط سینما - با پایگاه داده و رابط کاربری (Tkinter یا Django) 🔟 پلتفرم وب بلاگ - با جنگو یا Flask (احراز کاربر، نظرات، پستها) 1️⃣1️⃣ تشخیص چهره یا اشیا - با OpenCV و یادگیری ماشین 2️⃣1️⃣ تریدر خودکار ارز دیجیتال - تحلیل داده و APIنویسی (مثل Binance API) 💡 نکته: هرچه جلوتر بروید، چالشها جذابتر میشوند! 📌 شما چه پروژهای ساختهاید؟ #پایتون | #پروژه | #یادگیری_عملی | @Learnpythonicy