CodeBaz.dev
تفاوت list و tuple رو میدونید؟
لطفا در کامنت بنویسید
لطفا در کامنت بنویسید
📚 تفاوت لیست و تاپل در پایتون
1️⃣ تغییرپذیری (Mutability):
- 🔸 لیست: قابل تغییر است.
- 🔹 تاپل: غیرقابل تغییر است.
---
2️⃣ کاربردها:
- لیست: برای دادههای تغییرپذیر، مثل لیست خرید:
- تاپل: برای دادههای ثابت، مثل مختصات جغرافیایی:
---
3️⃣ سرعت و عملکرد:
- تاپلها به دلیل غیرقابل تغییر بودن (immutable) و متدهای کمتر سریعتر هستند.
نتیجه:
لیستها متدهای بیشتری مثل
---
4️⃣ استفاده در دیکشنری:
- لیست نمیتواند به عنوان کلید استفاده شود، اما تاپل میتواند.
---
5️⃣ حجم حافظه:
- لیستها به دلیل ساختار پیچیدهتر و متدهای بیشتر، حافظه بیشتری نسبت به تاپلها اشغال میکنند.
با استفاده از تابع
نتیجه:
- تعداد متدها:
لیستها متدهای بیشتری نسبت به تاپلها دارند، که نشاندهنده پیچیدگی بیشتر آنها است:
- تعداد متدهای لیست: 47
- تعداد متدهای تاپل: 33
- حجم حافظه:
- حجم لیست: بیشتر است زیرا ساختار دادهای آن باید قابلیت مدیریت تغییرات (مثل افزودن یا حذف عناصر) را داشته باشد.
- حجم تاپل: کمتر است زیرا ساختار سادهتری دارد و تغییرپذیر نیست.
تحلیل:
پیچیدگی بیشتر لیستها و متدهای اضافه باعث افزایش سربار حافظه میشود. برای مثال، متدهایی مانند
---
🎯 مقایسه خلاصه:
- لیست: تغییرپذیر، متدهای بیشتر، حجم بیشتر، مناسب دادههای پویا.
- تاپل: غیرقابل تغییر، متدهای کمتر، حجم کمتر، مناسب دادههای ثابت.
#پایتون_پیشرفته
1️⃣ تغییرپذیری (Mutability):
- 🔸 لیست: قابل تغییر است.
# مثال:
my_list = [1, 2, 3]
my_list[0] = 10 # تغییر عنصر
my_list.append(4) # اضافه کردن عنصر جدید
print(my_list) # خروجی: [10, 2, 3, 4]
- 🔹 تاپل: غیرقابل تغییر است.
# مثال:
my_tuple = (1, 2, 3)
# my_tuple[0] = 10 # خطا ❌: تاپل تغییرپذیر نیست!
print(my_tuple) # خروجی: (1, 2, 3)
---
2️⃣ کاربردها:
- لیست: برای دادههای تغییرپذیر، مثل لیست خرید:
shopping_list = ["milk", "bread", "eggs"]
shopping_list.append("cheese") # اضافه کردن محصول جدید
print(shopping_list) # خروجی: ['milk', 'bread', 'eggs', 'cheese']
- تاپل: برای دادههای ثابت، مثل مختصات جغرافیایی:
coordinates = (35.6892, 51.3890) # مختصات تهران
print(coordinates) # خروجی: (35.6892, 51.3890)
---
3️⃣ سرعت و عملکرد:
- تاپلها به دلیل غیرقابل تغییر بودن (immutable) و متدهای کمتر سریعتر هستند.
print("تعداد متدهای لیست:", len(dir(list))) # تعداد متدهای لیست
print("تعداد متدهای تاپل:", len(dir(tuple))) # تعداد متدهای تاپل
نتیجه:
لیستها متدهای بیشتری مثل
append
، remove
و غیره دارند که نیاز به مدیریت حافظه و عملکرد بیشتر دارند. این موضوع باعث کاهش سرعت نسبی آنها میشود.---
4️⃣ استفاده در دیکشنری:
- لیست نمیتواند به عنوان کلید استفاده شود، اما تاپل میتواند.
# مثال:
my_dict = {("latitude", "longitude"): "Tehran"}
print(my_dict[("latitude", "longitude")]) # خروجی: Tehran
---
5️⃣ حجم حافظه:
- لیستها به دلیل ساختار پیچیدهتر و متدهای بیشتر، حافظه بیشتری نسبت به تاپلها اشغال میکنند.
با استفاده از تابع
dir
میتوان تفاوت تعداد متدها و ساختارها را مشاهده کرد:import sys
sample_list = [1, 2, 3]
sample_tuple = (1, 2, 3)
print("تعداد متدهای لیست:", len(dir(sample_list))) # تعداد متدهای لیست
print("تعداد متدهای تاپل:", len(dir(sample_tuple))) # تعداد متدهای تاپل
print("حجم لیست:", sys.getsizeof(sample_list), "بایت") # حجم لیست
print("حجم تاپل:", sys.getsizeof(sample_tuple), "بایت") # حجم تاپل
نتیجه:
- تعداد متدها:
لیستها متدهای بیشتری نسبت به تاپلها دارند، که نشاندهنده پیچیدگی بیشتر آنها است:
- تعداد متدهای لیست: 47
- تعداد متدهای تاپل: 33
- حجم حافظه:
- حجم لیست: بیشتر است زیرا ساختار دادهای آن باید قابلیت مدیریت تغییرات (مثل افزودن یا حذف عناصر) را داشته باشد.
- حجم تاپل: کمتر است زیرا ساختار سادهتری دارد و تغییرپذیر نیست.
تحلیل:
پیچیدگی بیشتر لیستها و متدهای اضافه باعث افزایش سربار حافظه میشود. برای مثال، متدهایی مانند
append
و remove
نیازمند حافظه اضافی برای ذخیره اطلاعات مربوط به تغییرات هستند، اما تاپلها چون غیرقابل تغییر هستند، نیازی به این حافظه اضافی ندارند.---
🎯 مقایسه خلاصه:
- لیست: تغییرپذیر، متدهای بیشتر، حجم بیشتر، مناسب دادههای پویا.
- تاپل: غیرقابل تغییر، متدهای کمتر، حجم کمتر، مناسب دادههای ثابت.
#پایتون_پیشرفته
👍6❤3
CodeBaz.dev
print(1 == 1.0) print(1 is 1.0)
به نظرتون خروجی کد بالا چی میشه؟
Anonymous Quiz
10%
False False
20%
False True
17%
True True
54%
True False
CodeBaz.dev
به نظرتون خروجی کد بالا چی میشه؟
جالبه که فقط نیمی از افراد پاسخ درست دادند.
یک کیلوگرم سیب و یک کیلوگرم گلابی هموزن هستند اما جنسشون فرق میکنه
حالا همین موضوع در اعداد هم صدق میکنه. به عبارتی 1و 1.0 مقدار برابری دارند اما جنس متفاوتی دارند.
برای درک عمیقتر این مقاله رو از کُدباز بخونید!
@CodeBazDev
یک کیلوگرم سیب و یک کیلوگرم گلابی هموزن هستند اما جنسشون فرق میکنه
حالا همین موضوع در اعداد هم صدق میکنه. به عبارتی 1و 1.0 مقدار برابری دارند اما جنس متفاوتی دارند.
برای درک عمیقتر این مقاله رو از کُدباز بخونید!
@CodeBazDev
آموزش برنامهنویسی با محمدرضا
درک تفاوت عملگر == و is در پایتون
همانطور که یک کیلوگرم سیب و یک کیلوگرم گلابی وزن برابر و جنس متفاوتی دارند، عدد صحیح 1 و عدد اعشاری 1.0 هم مقدار برابر ولی جنس متفاوتی دارند. عملگر is در پایتون بهطور خاص برای مقایسه هویت اشیا طراحی شده است و با عملگر == که برای مقایسه مقادیر استفاده میشود،…
👍2👎1
CodeBaz.dev
جالبه که فقط نیمی از افراد پاسخ درست دادند. یک کیلوگرم سیب و یک کیلوگرم گلابی هموزن هستند اما جنسشون فرق میکنه حالا همین موضوع در اعداد هم صدق میکنه. به عبارتی 1و 1.0 مقدار برابری دارند اما جنس متفاوتی دارند. برای درک عمیقتر این مقاله رو از کُدباز بخونید!…
a = 10
b = 10
c = 1000
d = 1000
print(a == b, a is b, c == d, c is b)
👍2👎2
CodeBaz.dev
a = 10 b = 10 c = 1000 d = 1000 print(a == b, a is b, c == d, c is b)
خروجی کد بالا چی میشه؟
Anonymous Quiz
31%
True False True False
23%
True True True True
45%
True True True False
CodeBaz.dev
خروجی کد بالا چی میشه؟
این سوال نکته داشت
خیلی ها اشتباه پاسخ دادند
دلیلش به صورت خلاصه اینه که اعداد کوچک و یه سری مقادیر تو پایتون cache میشن
به زودی یه مقاله در موردش مینویسم و بیشتر توضیح میدم در موردش
خیلی ها اشتباه پاسخ دادند
دلیلش به صورت خلاصه اینه که اعداد کوچک و یه سری مقادیر تو پایتون cache میشن
به زودی یه مقاله در موردش مینویسم و بیشتر توضیح میدم در موردش
👍3
CodeBaz.dev
خروجی کد بالا چی میشه؟
پایتون هم مثل لینوکس توزیع های مختلفی داره
مثلا iron python و jython و CPython و ...
اگر نمیدونید از کدومش استفاده میکنید، شما دارید از نسخه CPython استفاده میکنید. این همون نسخهای هست که تو python.org قرار داره
تو این توزیع از پایتون، اعداد صحیح از -۵ تا ۲۵۶ تو خود پایتون cache میشن و اگه بهشون کاری نداشته باشیم برای خودشون تا آخر برنامه یه جایی از رم زندگی میکنند به همین دلیل id شون تا اخر ثابت میمونه به همین دلیل هست که در این سوال، گزینه سوم درست میشه
به زودی یه مقاله منتشر میکنم و توضیحات بیشتری میدم
@CodeBazDev
مثلا iron python و jython و CPython و ...
اگر نمیدونید از کدومش استفاده میکنید، شما دارید از نسخه CPython استفاده میکنید. این همون نسخهای هست که تو python.org قرار داره
تو این توزیع از پایتون، اعداد صحیح از -۵ تا ۲۵۶ تو خود پایتون cache میشن و اگه بهشون کاری نداشته باشیم برای خودشون تا آخر برنامه یه جایی از رم زندگی میکنند به همین دلیل id شون تا اخر ثابت میمونه به همین دلیل هست که در این سوال، گزینه سوم درست میشه
به زودی یه مقاله منتشر میکنم و توضیحات بیشتری میدم
@CodeBazDev
Telegram
CodeBaz.dev
خروجی کد بالا چی میشه؟
True False True False / True True True True / True True True False
True False True False / True True True True / True True True False
👍4
🤣7
یه اتفاق جالب برام افتاده
تو ۳۰ روز گذشته +50 امتیاز تو استک اورفلو فقط برای یک پاسخ مربوط به routing توی expo به دست آورده ام.
دو تا چیز میشه فهمید
- اول اینکه با وجود chat gpt هنوز stackoverflow داره به خوبی استفاده میشه. این نشون میده که chat gpt مشکلات پیچیده رو نمیتونه حل کنه هنوز
- دوم اینکه بریم expo یاد بگیریم. ظاهرا این روزا expo بیشتر رو بورسه
لینک این سوال تو استکاورفلو
@CodeBaz.dev
تو ۳۰ روز گذشته +50 امتیاز تو استک اورفلو فقط برای یک پاسخ مربوط به routing توی expo به دست آورده ام.
دو تا چیز میشه فهمید
- اول اینکه با وجود chat gpt هنوز stackoverflow داره به خوبی استفاده میشه. این نشون میده که chat gpt مشکلات پیچیده رو نمیتونه حل کنه هنوز
- دوم اینکه بریم expo یاد بگیریم. ظاهرا این روزا expo بیشتر رو بورسه
لینک این سوال تو استکاورفلو
@CodeBaz.dev
❤2
خیلی از تازه کاران نمیدونند که چطوری فکر کنند. یکی از همکارام دیروز یه هوش مصنوعی بهم معرفی کرد که اسمش DeepSeek هست. یه حالتی داره به اسم DeepThink که خیلی جالبه. اگه این حالتش رو فعال کنید میتونید ببینید که اون هوش مصنوعی چطوری فکر میکنه تا جواب شما رو بده.
این کمک میکنه که نحوه فکر کردن برای حل مسائل رو یاد بگیرید.
البته خیلی هنوز ازش استفاده نکرده ام و نمیدونم نسبت به chat gpt چقدر جواب هاش قابل اطمینان تره
https://www.deepseek.com/
@CodeBazDev
این کمک میکنه که نحوه فکر کردن برای حل مسائل رو یاد بگیرید.
البته خیلی هنوز ازش استفاده نکرده ام و نمیدونم نسبت به chat gpt چقدر جواب هاش قابل اطمینان تره
https://www.deepseek.com/
@CodeBazDev
Deepseek
DeepSeek | 深度求索
深度求索(DeepSeek),成立于2023年,专注于研究世界领先的通用人工智能底层模型与技术,挑战人工智能前沿性难题。基于自研训练框架、自建智算集群和万卡算力等资源,深度求索团队仅用半年时间便已发布并开源多个百亿级参数大模型,如DeepSeek-LLM通用大语言模型、DeepSeek-Coder代码大模型,并在2024年1月率先开源国内首个MoE大模型(DeepSeek-MoE),各大模型在公开评测榜单及真实样本外的泛化效果均有超越同级别模型的出色表现。和 DeepSeek AI 对话,轻松接入 API。
❤2👍2
به نظر من یکی از سخت ترین کار های دنیا نوشتن کامنت مناسب برای یک کامیت هستش
نظر شما چیه؟
#git
@CodeBazDev
نظر شما چیه؟
#git
@CodeBazDev
👌5💯2😭1
CodeBaz.dev
به نظر من یکی از سخت ترین کار های دنیا نوشتن کامنت مناسب برای یک کامیت هستش نظر شما چیه؟ #git @CodeBazDev
به نظر من سینیور بودن یه نفر رو میشه با نگاه کردن به کامنت های کامیت هاش فهمید.
نه اینکه اگه کسی کامنت خوب ننوشت سینیور نباشه، ولی اگه کامنت خوب نوشته بود میشه گفت یکی از مولفه های سینیور بودن رو داره
#git
@CodeBazDev
نه اینکه اگه کسی کامنت خوب ننوشت سینیور نباشه، ولی اگه کامنت خوب نوشته بود میشه گفت یکی از مولفه های سینیور بودن رو داره
#git
@CodeBazDev
👍3👏1
میدونید چرا کامنت نویسی برای کامیت ها سخته؟
اگه توی اون کامیت بیش از یک کار انجام شده باشه نوشتن کامنتش سخت میشه
مثلا اگه دو تا باگ حل شده باشه و یه فیچر اضافه شده باشه نمیشه یه کامنت واضح نوشت
پس پیشنهادم اینه که تعداد کامیت ها رو زیاد کنید.
به محض اینکه کوچکترین باگی حل شد یا کوچکترین فیچری اضافه شد کامیت مربوطه اش رو بزنید.
#git
@CodeBazDev
اگه توی اون کامیت بیش از یک کار انجام شده باشه نوشتن کامنتش سخت میشه
مثلا اگه دو تا باگ حل شده باشه و یه فیچر اضافه شده باشه نمیشه یه کامنت واضح نوشت
پس پیشنهادم اینه که تعداد کامیت ها رو زیاد کنید.
به محض اینکه کوچکترین باگی حل شد یا کوچکترین فیچری اضافه شد کامیت مربوطه اش رو بزنید.
#git
@CodeBazDev
👍4💯2
حواستون باشه یه موقع از اون طرف بوم هم نیوفتید. یعنی تعداد کامیت ها رو به صورت بیرویه زیاد نکنید.
منظورم اینه که اگه مثلا یه فایل اضافه کردید که به تنهایی یک فیچر حساب نمیشه کامیتش نکنید.
سعی کنید فیچری به موضوع نگاه کنید.
اضافه شدن هر فیچر = یک کامیت
حذف کردن هر فیچر = یک کامیت
حل هر باگ = یک کامیت
#git
@CodeBazDev
منظورم اینه که اگه مثلا یه فایل اضافه کردید که به تنهایی یک فیچر حساب نمیشه کامیتش نکنید.
سعی کنید فیچری به موضوع نگاه کنید.
اضافه شدن هر فیچر = یک کامیت
حذف کردن هر فیچر = یک کامیت
حل هر باگ = یک کامیت
#git
@CodeBazDev
👌1
از وقتی اومدم تپسی اینقدر بیشتر کار میکنم که وقتی دارم کد میزنم حس اون نونوایی رو دارم که تو سنگکی با یه ریتم زیبایی خمیر پهن میکنه
🤣4👍1
من از فرمول زیر برای نامگذاری branch های گیت استفاده میکنم
TASK_TYPE/TASK_NAME
TASK_TYPE = fix (باگ فیکس)
TASK_TYPE = fe (فیچر جدید)
TASK_TYPE = hotfix (فیکس سرعتی)
TASK_NAME = نام تسکی شما
مثلا اگه دارم باگ لاگین رو حل میکنم یه برنچ به اسم fix/login درست میکنم.
مثلا اگه دارم صفحه اشتراک گذاری رو درست میکنم اسم برنچ رو میذارم fe/sharing
#git
@CodeBazDev
TASK_TYPE/TASK_NAME
TASK_TYPE = fix (باگ فیکس)
TASK_TYPE = fe (فیچر جدید)
TASK_TYPE = hotfix (فیکس سرعتی)
TASK_NAME = نام تسکی شما
مثلا اگه دارم باگ لاگین رو حل میکنم یه برنچ به اسم fix/login درست میکنم.
مثلا اگه دارم صفحه اشتراک گذاری رو درست میکنم اسم برنچ رو میذارم fe/sharing
#git
@CodeBazDev
👍4
وقتی به عنوان سرپرست برنامهنویسان توی یه گروهی مشغول به کار بودم یه چالشی که داشتم این بود که نمیدونستم کدوم برنامه نویس الان داره روی کدوم برنچ کار میکنه. برای حل این مشکل با خودشون جلسه گذاشتم و تصمیم گرفتیم که اسمهامون رو هم توی نام برنچ بنویسیم. مثلا اگه من قرار بود تسک «اضافه کردن امکان آپلود تصویر» رو انجام بدم اسم برنچش رو میذاشتیم:
fe/mmreza/upload-image
البته الان که فکر میکنم میبینم نیازی نبود این کارو کنیم. روش های بهتری هم بود که بشه فهمید کی رو چه برنچی کار میکنه که تو پست بعدی میگم ولی قبلش دوست دارم اگه کسی ایده ای داره بگه
#git
@CodeBazDev
fe/mmreza/upload-image
البته الان که فکر میکنم میبینم نیازی نبود این کارو کنیم. روش های بهتری هم بود که بشه فهمید کی رو چه برنچی کار میکنه که تو پست بعدی میگم ولی قبلش دوست دارم اگه کسی ایده ای داره بگه
#git
@CodeBazDev
👍3