eitaa logo
آموزش پایتون
63 دنبال‌کننده
244 عکس
106 ویدیو
52 فایل
ارتباط: https://eitaa.com/joinchat/956171922Cb501d5a32f لینک همین کانال: @LearnPythonIcy لینک کانال تلگرام: https://t.me/learnpythonicy
مشاهده در ایتا
دانلود
✔️ گروه‌بندی آیتم‌ها در پایتون با defaultdict در بسیاری از سناریوهای واقعی (دیتاپروسسینگ، گزارش‌گیری، لاگ‌ها، دسته‌بندی داده‌ها)، نیاز داریم آیتم‌ها را بر اساس یک کلید مشخص گروه‌بندی کنیم. روش‌های معمول با if و in کد را شلوغ می‌کنند. راه‌حل پایتونیک و تمیز: استفاده از defaultdict.
from collections import defaultdict

data = [
    ("apple", "fruit"),
    ("carrot", "vegetable"),
    ("banana", "fruit"),
    ("spinach", "vegetable"),
]

grouped = defaultdict(list)

for item, category in data:
    grouped[category].append(item)

print(dict(grouped))
📌 خروجی: { 'fruit': ['apple', 'banana'], 'vegetable': ['carrot', 'spinach'] } 🔍 مزایا کد خوانا و کوتاه بدون نیاز به چک‌کردن وجود کلید مناسب برای دسته‌بندی دیتا و گزارش‌ها ⚠️ نکته: defaultdict مقدار پیش‌فرض می‌سازد، پس اگر نوع داده اشتباه انتخاب شود، ممکن است باگ پنهان ایجاد کند. | | | | @LearnPythonIcy
دقت در محاسبات عددی (Floating vs Decimal vs Fraction) در اغلب زبان‌های برنامه‌نویسی، اعداد اعشاری از نوع Floating-point به‌صورت دودویی در حافظه ذخیره می‌شوند. این یعنی در بسیاری از محاسبات، با مقادیر تقریبی سروکار داریم، نه عدد دقیق. برای افزایش دقت: می‌توان از Decimal استفاده کرد که خطای اعشاری را تا حد زیادی کاهش می‌دهد، اما حتی Decimal هم در برخی سناریوهای خاص کاملاً بی‌نقص نیست. 📌 وقتی دقت ۱۰۰٪ اهمیت دارد (مثل محاسبات مالی، آماری یا ریاضی دقیق)، بهترین انتخاب Fraction است. که Fraction عدد را به‌صورت کسر منطقی (صورت/مخرج) ذخیره می‌کند، نه اعشار تقریبی؛ در نتیجه محاسبات: . دقیق . قابل پیش‌بینی . بدون خطای اعشاری انجام می‌شوند. ✅ خلاصه‌ی انتخاب float → سریع ولی تقریبی Decimal → دقیق‌تر، مناسب محاسبات حساس Fraction → دقیق‌ترین گزینه برای محاسبات ایده‌آل 🧪 مثال
from decimal import Decimal
from fractions import Fraction

# float
print(0.1 + 0.2)
# خروجی: 0.30000000000000004

# Decimal
print(Decimal("0.1") + Decimal("0.2"))
# خروجی: 0.3

# Fraction
print(Fraction(1, 10) + Fraction(2, 10))
# خروجی: 3/10

📌 نکته مهم:

float
 به‌خاطر نمایش دودویی دچار خطا می‌شود. 

Decimal
 باید با رشته (string) ساخته شود. 

Fraction
 نتیجه را دقیق و بدون خطا نگه می‌دارد


 |  |  |  |  | @Learnpythonicy
کار با فایل‌های YAML در Python با کتابخانه PyYAML کتابخانه PyYAML امکان کار آسان و مؤثر با فایل‌های YAML (YAML Ain’t Markup Language) را فراهم می‌کند. این فرمت معمولاً برای پیکربندی‌ها، تنظیمات و تبادل داده‌های ساختاریافته استفاده می‌شود.
import yaml

# داده‌ای که می‌خواهیم در فایل ذخیره کنیم
data_to_write = {'name': 'علی', 'age': 25, 'city': 'تهران'}

# نوشتن داده در فایل YAML
with open('example.yaml', 'w') as file:
    yaml.dump(data_to_write, file, default_flow_style=False)

# خواندن داده از فایل YAML
with open('example.yaml', 'r') as file:
    loaded_data = yaml.safe_load(file)
    print(f"داده‌های بارگذاری شده: {loaded_data}")
خروجی فایل example.yaml: age: 25 city: تهران name: علی در این مثال، ما دیکشنری data_to_write را در فایل example.yaml ذخیره کرده و سپس داده‌ها را دوباره در متغیر loaded_data بارگذاری می‌کنیم. کتابخانه PyYAML ابزار ساده و خوانایی برای کار با داده‌های YAML در Python فراهم می‌کند. چه برای ذخیره پیکربندی‌ها، چه تبادل داده‌های ساختاریافته، PyYAML باعث می‌شود کد شما خوانا و آسان برای استفاده باشد. 🙂‍↔️ | | @learnpythonicy
این تست واقعاً ذهن آدمو درگیر می‌کنه 😈 اول فکر کن خروجی این کد چیه؟ 🤯 و بعد توضیحات و بخون! ❓چرا - خط ۲: append روی لیست مشترک، همه رو [1] می‌کنه - خط ۳: x[1] + [2] یه لیست جدیــد می‌سازه و به x[1] نسبت داده می‌شه ← دیگه با بقیه مشترک نیست، میشه [2] - خط ۴: extend روی لیست مشترک (که هنوز x[0] و x[2] بهش وصله) عدد ۳ رو اضافه می‌کنه ← هر دو می‌شن [1, 3] 🔥نکته تستیِ پست عملگر + همیشه یه لیست جدید می‌سازه، در حالی که append و extend روی لیست موجود تغییر اعمال می‌کنند! Output: [[1, 3], [2], [1, 3]] 🎯 سوال اگه به جای x[1] = x[1] + [2] می‌نوشتیم x[1].append(2) چی میشد؟ 🤔👇 | @learnpythonicy
کار با فایل‌های YAML در Python با کتابخانه PyYAML کتابخانه PyYAML امکان کار آسان و مؤثر با فایل‌های YAML (YAML Ain’t Markup Language) را فراهم می‌کند. این فرمت معمولاً برای پیکربندی‌ها، تنظیمات و تبادل داده‌های ساختاریافته استفاده می‌شود. import yaml # داده‌ای که می‌خواهیم در فایل ذخیره کنیم data_to_write = {'name': 'علی', 'age': 25, 'city': 'تهران'} # نوشتن داده در فایل YAML with open('example.yaml', 'w') as file: yaml.dump(data_to_write, file, default_flow_style=False) # خواندن داده از فایل YAML with open('example.yaml', 'r') as file: loaded_data = yaml.safe_load(file) print(f"داده‌های بارگذاری شده: {loaded_data}") خروجی فایل example.yaml: age: 25 city: تهران name: علی در این مثال، ما دیکشنری data_to_write را در فایل example.yaml ذخیره کرده و سپس داده‌ها را دوباره در متغیر loaded_data بارگذاری می‌کنیم. کتابخانه PyYAML ابزار ساده و خوانایی برای کار با داده‌های YAML در Python فراهم می‌کند. چه برای ذخیره پیکربندی‌ها، چه تبادل داده‌های ساختاریافته، PyYAML باعث می‌شود کد شما خوانا و آسان برای استفاده باشد. 🙂‍↔️ | | @learnpythonicy
✔️ مدیریت فایل‌ها در پایتون با ۷ روش حرفه‌ای! برای کار با فایل‌ها در پایتون، این تکنیک‌های کاربردی را امتحان کنید: 1️⃣ باز کردن و خواندن فایل
with open('file.txt', 'r') as f:
    content = f.read()
print(content)
2️⃣ نوشتن در فایل
with open('file.txt', 'w') as f:
    f.write("سلام دنیا!")
3️⃣ افزودن به فایل
with open('file.txt', 'a') as f:
    f.write("\nخط جدید")
4️⃣ خواندن خط به خط
with open('file.txt', 'r') as f:
    for line in f:
        print(line.strip())
5️⃣ بررسی وجود فایل
import os
print(os.path.exists('file.txt'))  # True یا False
6️⃣ حذف فایل
import os
os.remove('file.txt')
7️⃣ مدیریت مسیرها با pathlib
from pathlib import Path
path = Path('file.txt')
print(path.exists())
print(path.read_text())
🗝 روش ویژه: خواندن و نوشتن فایل‌های CSV با pandas
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
df.to_csv('output.csv', index=False)
نکات طلایی * همیشه از
with
برای مدیریت فایل استفاده کنید * برای مسیرهای پیچیده از
pathlib
کمک بگیرید * برای داده‌های جدولی از
pandas
بهره ببرید | | | | @learnpythonic > *برای ذخیره‌سازی، تحلیل داده و اتوماسیون کاربرد دارد*
✔️ کار با لیست‌ها در پایتون با ۷ روش حرفه‌ای! برای مدیریت لیست‌ها و داده‌های متوالی، این تکنیک‌های کاربردی را امتحان کنید: 1️⃣ ایجاد لیست fruits = ['apple', 'banana', 'cherry'] print(fruits) 2️⃣ اضافه کردن عنصر fruits.append('orange') print(fruits) 3️⃣ درج عنصر در موقعیت خاص fruits.insert(1, 'kiwi') print(fruits) 4️⃣ حذف عنصر fruits.remove('banana') print(fruits) 5️⃣ دسترسی به عناصر با ایندکس print(fruits[0]) # اولین عنصر print(fruits[-1]) # آخرین عنصر 6️⃣ مرتب‌سازی لیست numbers = [5, 2, 9, 1] numbers.sort() print(numbers) 7️⃣ لیست‌ها با فهم لیست (List Comprehension) squares = [x**2 for x in range(5)] print(squares) 🗝 روش ویژه: تبدیل لیست به آرایه NumPy import numpy as np arr = np.array([1, 2, 3, 4]) print(arr * 2) نکات طلایی * برای اضافه و حذف عنصر از
append
و
remove
استفاده کنید * List comprehension کد شما را کوتاه و خواناتر می‌کند * برای محاسبات عددی بزرگ، لیست‌ها را به
NumPy array
تبدیل کنید | | | | @learnpythonicy > *برای ذخیره داده، محاسبات و پردازش اطلاعات کاربرد دارد*
✔️ 10 Python Set Tricks You Should Know! 🐍✨ 1️⃣ ساخت Set یکتا از لیست unique_items = set([1, 2, 2, 3, 4]) 2️⃣ افزودن آیتم my_set.add(5) 3️⃣ حذف آیتم بدون خطا my_set.discard(10) # Error نمی‌دهد 4️⃣ اجتماع دو مجموعه (Union) result = set1 | set2 5️⃣ اشتراک دو مجموعه (Intersection) common = set1 & set2 6️⃣ تفاضل مجموعه‌ها (Difference) diff = set1 - set2 7️⃣ بررسی زیرمجموعه بودن if set1 <= set2: print("Subset") 8️⃣ حذف آیتم تصادفی item = my_set.pop() 9️⃣ ساخت Set Comprehension squares = {x**2 for x in range(5)} 🔟 حذف آیتم‌های تکراری از رشته unique_chars = set("programming") > ⚠️ ست ها(set) فوق‌العاده سریع هستند (O(1) average lookup)، اما ترتیب را حفظ نمی‌کنند! | | | @LearnPythonicy 👇 بیشتر از کدوم عملیات Set در پروژه‌هات استفاده می‌کنی؟
✔️ 10 Python Async & Concurrency Tricks You Should Know! ⚡🐍 1️⃣ اجرای تابع async import asyncio async def main(): print("Hello Async") asyncio.run(main()) 2️⃣ اجرای همزمان چند Task async def task(n): await asyncio.sleep(1) return n results = await asyncio.gather(task(1), task(2)) 3️⃣ ایجاد Task در پس‌زمینه task = asyncio.create_task(task(3)) 4️⃣ محدود کردن همزمانی با Semaphore sem = asyncio.Semaphore(3) async with sem: await some_io() 5️⃣ Timeout برای جلوگیری از Hang await asyncio.wait_for(task(1), timeout=2) 6️⃣ اجرای کد Blocking داخل Async loop = asyncio.get_running_loop() result = await loop.run_in_executor(None, blocking_func) 7️⃣ استفاده از ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor 8️⃣ استفاده از ProcessPool برای CPU-Bound from concurrent.futures import ProcessPoolExecutor 9️⃣ مدیریت Race Condition با Lock lock = asyncio.Lock() async with lock: shared_resource += 1 🔟 Async HTTP Requests با aiohttp import aiohttp async with aiohttp.ClientSession() as session: async with session.get("https://api.example.com") as resp: data = await resp.json() > ⚠️ نکته: Async برای I/O-Bound فوق‌العاده است، اما برای CPU-Bound از multiprocessing استفاده کن. 👇 تو پروژه‌هات بیشتر با I/O-Bound سروکار داری یا CPU-Bound؟
سالتون پُرپول، پُرموفقیت و شادی باشه 🦦❤️
🚀 10 کاربرد شگفت‌انگیز ماژول
datetime
در پایتون که باید بدانید! 🕰️ در دنیای برنامه‌نویسی، کار با تاریخ و زمان یکی از رایج‌ترین نیازهاست. ماژول
datetime
در پایتون ابزارهای قدرتمندی برای این منظور فراهم می‌کند. در اینجا 10 نکته کلیدی را با هم مرور می‌کنیم: 1️⃣ دریافت تاریخ و زمان فعلی: python from datetime import datetime now = datetime.now() print(now) 2️⃣ ساخت تاریخ و زمان دلخواه: python from datetime import datetime dt = datetime(2024, 3, 15, 10, 30, 0) # سال، ماه، روز، ساعت، دقیقه، ثانیه print(dt) 3️⃣ استخراج اجزای تاریخ/زمان: python year = now.year month = now.month day = now.day hour = now.hour minute = now.minute second = now.second print(f"{year}-{month}-{day} {hour}:{minute}:{second}") 4️⃣ فرمت‌بندی تاریخ و زمان (strftime): python formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date) # %A: نام کامل روز هفته، %B: نام کامل ماه 5️⃣ تبدیل رشته به تاریخ و زمان (strptime): python date_string = "2023-12-25 14:00:00" dt_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S") print(dt_object) 6️⃣ محاسبه اختلاف زمانی (timedelta): python from datetime import timedelta one_day = timedelta(days=1) yesterday = now - one_day print(yesterday) 7️⃣ افزودن یا کم کردن بازه زمانی: python future_date = now + timedelta(weeks=2, hours=3) print(future_date) 8️⃣ دریافت روز هفته یا روز سال: python weekday = now.weekday() # دوشنبه 0 است day_of_year = now.timetuple().tm_yday print(f"Weekday (0=Mon): {weekday}, Day of year: {day_of_year}") 9️⃣ مقایسه تاریخ‌ها: python date1 = datetime(2024, 1, 1) date2 = datetime(2024, 2, 1) if date1 < date2: print("Date1 is earlier than Date2") 🔟 تبدیل منطقه زمانی (نیازمند نصب کتابخانه
pytz
): python # pip install pytz # from datetime import datetime # import pytz # # utc_now = datetime.now(pytz.utc) # local_tz = pytz.timezone("Asia/Tehran") # tehran_now = utc_now.astimezone(local_tz) # print(f"Tehran time: {tehran_now}") > ⚠️ به یاد داشته باشید که کار با تاریخ و زمان ممکن است به دلیل تفاوت مناطق زمانی و قوانین وقت تابستانی (Daylight Saving Time) کمی پیچیده شود. استفاده صحیح از کتابخانه‌هایی مانند
pytz
این مشکلات را حل می‌کند! | | @LearnPythonicy
«آموزش پایتون » داخل بله یه چنل زدم، محیط بهتر و پرتعامل تری میتونیم اونجا داشته باشیم. 😉 🆔 شناسه: https://ble.ir/learnpythonicy