✔️ پیدا کردن حروف منحصر به فرد در یک رشته
برای پیدا کردن حروف منحصر به فرد (حذف کاراکترهای تکراری از متن) در یک رشته، معمولاً از حلقهها و ساختارهای شرطی استفاده میکنیم:
unique_chars = []
for char in my_string:
if char not in unique_chars:
unique_chars.append(char)
اما پایتون یک روش حرفهای و بهینهتر ارائه میدهد:
unique_chars = list(set(my_string))
👀 چرا این روش کار میکند؟
- تابع set() به طور خودکار تمام عناصر تکراری را حذف میکند.
- با تبدیل نتیجه به لیست، خروجی مورد نظر ما را میدهد.
نکته:
اگر ترتیب حروف مهم است، میتوانید از dict استفاده کنید:
unique_ordered = list(dict.fromkeys(my_string))
این روش:
1. سریعتر و خوانا تر است
2. برای رشتههای طولانی کارایی بهتری دارد
3. کد را حرفهایتر نشان میدهد
#PythonTricks | #بدانیم | @LearnPythonIcy
✔️ 10 Python Dictionary Tricks You Should Know! 🐍✨
1️⃣ ساخت دیکشنری با مقدار پیشفرض
from collections import defaultdict
d = defaultdict(int)
2️⃣ ادغام دو دیکشنری (Python 3.9+)
merged = dict1 | dict2
3️⃣ برعکس کردن key و value
reversed_dict = {v: k for k, v in my_dict.items()}
4️⃣ گرفتن مقدار با مقدار پیشفرض امن
value = my_dict.get("key", 0)
5️⃣ مرتبسازی دیکشنری بر اساس value
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))
6️⃣ حذف آیتم و گرفتن مقدار همزمان
value = my_dict.pop("key")
7️⃣ ساخت دیکشنری از دو لیست
result = dict(zip(keys, values))
8️⃣ بررسی وجود چند key بهصورت همزمان
if {"a", "b"} <= my_dict.keys():
print("Exists")
9️⃣ دیکشنری کامپرهنشن
squares = {x: x**2 for x in range(5)}
🔟 شمارش تکرار آیتمها
from collections import Counter
count = Counter(["a", "b", "a", "c"])
> ⚠️ دیکشنریها خیلی قدرتمندن؛ ولی خوانایی کد رو فدای کوتاهنویسی نکن!
#dict | #PythonTricks | @LearnPythonicy
کدومش بیشتر به کارت خورد؟
https://daigo.ir/secret/62000079358
✔️ 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)، اما ترتیب را حفظ نمیکنند!
#Set | #PythonTricks | #DataStructures | @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 استفاده کن.
#AsyncIO #Concurrency #Backend #Performance #PythonTricks
👇 تو پروژههات بیشتر با I/O-Bound سروکار داری یا CPU-Bound؟