<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدرضا کریمی‌نژاد</title>
        <link>https://virgool.io/feed/@perfectcodder</link>
        <description>علاقه‌مند به ریاضی و هوش‌مصنوعی</description>
        <language>fa</language>
        <pubDate>2026-06-16 03:00:05</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/36482/avatar/daEiDv.jpeg?height=120&amp;width=120</url>
            <title>محمدرضا کریمی‌نژاد</title>
            <link>https://virgool.io/@perfectcodder</link>
        </image>

                    <item>
                <title>چطوری خودکشی کردم؟</title>
                <link>https://virgool.io/@perfectcodder/%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%D8%AE%D9%88%D8%AF%DA%A9%D8%B4%DB%8C-%DA%A9%D8%B1%D8%AF%D9%85-hihuwwjp9ig3</link>
                <description>مرحله اولکلاس ششم ابتدایی بودم که موهام ریخت. بیماری به اسم آلوپسی تمام روح کودکی من رو آزرده خاطر کرد. خیلی سخت بود عادت کردن به یک چهره جدید. چهره‌ای که همیشه انگار مدیر مدرسه موهایش را اجبار به تراشیدن کرده . در همان سن کم افراد زیادی مرا مورد تمسخر قرار می‌دادند. همه به من نگاه می‌کردند. بچه‌ای که موهایش تراشیده شده و ابرو و مژه‌ای ندارد. من نمی‌گویم چنین چیزی بد است ولی در آن سن مرا خیلی تحت تاثیر قرار داد. سال هفتم در یک مدرسه غیرانتفاعی بودم و پس از آن یعنی کلاس هشتم وارد مدرسه نمونه توحیدی شدم. نزدیک به امتحانات نوبت اول بود که حالم از نظر روحی خیلی بد شد. دیگه مدرسه نرفتم و دوس نداشتم تو هیچ جمعی باشم. دوس نداشتم درس بخونم و حال و حوصله هیچ‌ کاریو نداشتم. میخواستم ترک تحصیل کنم. مدیر مدرسه آقای رحیمی خیلی به من لطف داشتن و منو درک می‌کردن. اما آقای محمد روانخواه بسیار سنگدل بودن و من رو سرزنش میکردن. فکر نکنم هیچوقت بتونم ببخشمش. من میخواستم ترک تحصیل کنم و خانواده هم مثل همیشه پشتم بودن. خلاصه گذشت من رفتم و اون سال‌ها تموم شد و منم رفتم دبیرستان. از کلاس دهم تا دوازدهم همه چی خوب بود. سال دوازدهم دوباره ...مرحله دومسال دوازدهم بد نبود ولی به محض اینکه رفتم دانشگاه حس میکردم کم کم دارم خودمو میبازم. روحیم کم شده بود. انرژیم کم شده بود. ترم۲ بود چند روزش حالم خیلی بد بود. بیماری خیلی قوی‌تر شده بود. من فقط به فکر خودکشی بودم. میخواستم خودمو بکشم فقط. هیچ‌ انگیزه‌ای برای زندگی کردن نداشتم. مرحله سومرفتم داروخونه و ۸ ورقه استامینوفن کدیین (۸۰ تا قرص) خریدم و تو آب معدنی حل کردم و خوردم. آماده شدم برای مردن ولی یهو به دوستام گفتم که من این کارو کردم و منو بردن بیمارستان. تو بیمارستان حالم خیلی بد شد. همش توهم زده بودم. همش زجر میکشیدم. معدمو شست‌وشو دادن و چند روزی بستری بودم ولی مرخصم کردن ولی روحم همون بود. گذشت و گذشت تا یه شب که حالم خیلی بد بود. مرحله چهارم یه تیغ خریدم و رفتم تو پارک. هوا تاریک بود و سرد. آهنگ علی سورنا گوش دادم و خیلی غمگین شدم. تیغو برداشتم و دو تا از رگای اصلی و رگ بالای دستو که معمولا سرم میزنن توش زدم. خیلی خون میومد و منم آماده شدم برای مردن دستام یخ زده بود و درد میکردن. یخورده پشیمون شدم و رفتم خونه. مامان بابام منو دیدن و کلا نابود شدن. منو سوار ماشین کردن و همینجور اشک میریختن. صدای گریه‌شون و دیدن اشکاشون همینطور رو قلبم تیغ میکشید. همش میگفتم محمدرضا ارزششو داره؟؟ دستامو بخیه زدمو و قول دادم دیگه زندگی کنم و به زندگی نکردن فکر کنم. چند روز بعدش حالم خیلی بد بود.مرحله پنجم هرچی قرص آرامبخش تو خونه بود رو برداشتم و رفتم یه گوشه‌ای. شب بود و هوا سرد. یه مشت کلونازپام و دیازپام و ... همه رو خوردم و راه افتادم که برم. هیچی یادم نمیاد فقط میدونم بهوش اومدم دیدم تو خونه خوابیدم و سه روز گذشته. بهم گفتن معدتو شست و شو دادیم. مامان بابام به این قضیه عادت کرده بودن. هر دفعه به خودم قول میدادم که کاری نکنم. ولی ...مرحله ششم ولی نه انگار سرنوشت من خودکشی بود. یکی دو هفته بعدش رفتم داروخونه سرنگ ۵ سی‌سی خریدم. سرنگ رو پر هوا کردم و زدم تو رگ دستم و هوا رو تو رگم کامل خالی کردم. قلبم داشت میجوشید. یه لحظه چشمام سیاهی رفت ولی چیزیم نشد و رفتم خونه ولی هیشکی چیزی نفهمید. گفتم دیگه بسه آخه چرا این همه بار میخوای خودتو بکشی؟؟؟ تموم شد؟ نه ادامه داره. بعد چند مدت یکم اوضاع خوب بود. یه شب حالم خیلی بد شد و ...مرحله هفتم شب بود و حالم خیلی بد بود. رفتم داروخونه و ۴ ورقه پروپرانولول ۴۰ میلی (۱۶۰۰ میلی) خریدم و همه رو خوردم. رفتم خونه طبقه بالا بود خونم و خانواده طبقه پایین بودن. خیلی حالم بد شده بود. حس کردم قلبم داره وای میسه. حس میکنم سایه مرگ رو دیدم و کلا ترس بود. زنگ زدم به مامانم گفتم دستگاه فشار رو بیار و فشامنو بگیر. دستگاه رو آورد و فشارم خیلی پایین بود. ۶ روی ۴. ضربان قلب ۵۵ و واقعا فک کنم  اوضاع خراب بود. به مامانم چیزی نگفتم و خوابیدم. گفتم امشب تمومه ولی صبح چشمام باز شد و سالم سالم بودم. یه چند روز گذشت و شب شد و حالم وحشتناک بد بود. مرحله هشتم حالم وحشتناک بد بود. ۱۲ تا دیازپام خوردم (دکتر برام نوشته بود برا خواب). حالم بد شد و رفتم خونه دیدم دلم نمیاد بگم چیکار کردم ولی از یه طرفم اون اشکا میومد جلو چشام و میگفتم بگم بهشون اگه بمیرم خیلی داغون میشن. بهشون گفتم و زنگ زدن اورژانس. زیاد چیزی یادم نمیاد ولی خیلی اذیت شدم خیلی. همه چی باز خوب بود تا یه روز که تصمیم گرفتم سوار ماشین بشم و فقط برم. مرحله نهم سوار ماشین شدم و رفتم سمت بوشهر ساعتای ۱۱ شب بود. وقتی رسیدم بوشهر یه تیغ خریدم. تو ماشین شاه رگو زدم و خون مثل آب پر فشار میومد. گریه کنان با اون دستی که خون ازش میومد رفتم تو شهر لب دریا. نشستم چند نخ سیگار کشیدم و رفتم که بخوابم. تو ماشین با همون دست خوابیدم و صبح که بیدار شدم شروع کردم به رانندگی تا کازرون و اونجا رفتم بیمارستان (بوشهر برام ترسناک شه بود). اونجا دستمو بخیه زدمو و رفتم شیراز لباس خریدم (کازرون برام ترسناک شده بود). بعد شیراز رفتم گچساران و توه کوه کنار ماشین داشتم سیگار میکشیدم. خلاصه برگشتم خونه. بابام و مامانم میدونستن باز دستمو زدم ولی به روم نیاوردن و گفتیم و خندیدیم. قرار بود دیگه هیچ کاری کنم. یه مدت طولانی گذشت و هیچ کاری نکردم. همه باهام حرف زدن و خیلی نرم و محبت‌آمیز میخواستن منو از این کار منصرف کنن. مرحله دهم چند مدت بعدش نزدیک به ۲۵ تا آریپیپرازول خوردم و باز حالم بد شد و رفتم بیمارستان و باز شست و شو و ... خیلی حالم بد بود. از اون روز تصمیم گرفتم دیگه سمتش نرم و نرفتم.مرحله آخرمی‌بینید چقدر من تلاش کردم و موفق نشدم؟ من یه معتادم. معتاد به خودکشی ولی الان ۹ ماهه که ترک کردم. شاید به ظاهر معلوم نباشه که این داستان وافعیه منه ولی واقعا این داستان زندگی منه. هیچ‌چیزی ارزش خودکشی کردن نداره. من بارها این کار رو کردم و هر بار بیشتر فمیدم واقعا ارزشی نداره. ما آدما اومدیم که زندگی کنیم. بیاین زندگی خودمونو قشنگ‌تر کنیم تا اینکه بخوایم نباشیم. من به کمک دکتر علی محمدی کامل خوب شدم و الان میفهمم چقدر من کار اشتباهی می‌کردم. از اینکه می‌رید پیش روانپزشک خجالت نکشین. همونطور که خیلیا دیابت دارن و قرص قند میخورن ماهم قرص اعصاب میخوریم که بتونیم زندگی کنیم. هیچ فرقی باهم نمیکنن. مراقب خودت باش. اگه کسی قدرتو نمیدونه من خیلی تو رو با ارزش میدونم. تو قوی‌ترین آدمی هستی که من دیدم.</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Mon, 11 Apr 2022 00:08:56 +0430</pubDate>
            </item>
                    <item>
                <title>همه چیز درباره الگوریتم DBSCAN</title>
                <link>https://virgool.io/@perfectcodder/%D9%87%D9%85%D9%87-%DA%86%DB%8C%D8%B2-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-dbscan-jpp35exgbdgk</link>
                <description>به عنوان یک مهندس ماشین لرنینگ یا دانشمند داده یادگیری الگوریتم‌های بدون ناظر امتیازهای مثبتی برای ما فراهم میاره و به طور کلی خیلی میتونه یادگیری این الگوریتم‌ها و نحوه استفاده از اونا شما رو خاص‌تر کنه.چرا ما به الگوریتم خوشه‌بندی DBSCAN نیاز داریم؟این خیلی مهمه که ما بدونیم یه چیزیو برا چی داریم یاد میگیریم. ما احتمالا با الگوریتمای K-Means و Hierarchical آشناییم و شاید با خودتون فکر کنین وقتی اونا رو بلدین چه کاریه یه الگوریتم جدید یاد بگیرین. اما هم K-Means و هم Hierarchical تو خوشه‌بندی شکل‌های پیچیده و پیچ‌در‌پیچ مثل شکل زیر شکست میخورن. خوشه‌بندی دو الگوریتم بالا رو  برای شکل‌های پیچیده ببینید.نحوه خوشه‌بندی دو الگوریتم K-میانگین و سلسه‌مراتبیهمینطور  میبینید داده‌های نویزی وجود داره که تو خوشه‌ها قرار گرفتهن. الگوریتم DSBSCAN میاد و تمام این نقطه ضعف‌ها رو پوشش میده. هم رو شکلای پیچیده خوب جواب میده و هم نویزها و Anomalyها رو تشخیص میده. به شکل زیر که خروجی الگوریتم DBSCAN برای شکل بالا هست دقت کنید:نویزها نیز تشخیص داده شده و در یک خوشه جدا در نظر گرفته شدنهمنطور که دیدین الگوریتم DBSCAN خیلی میتونه به ما کمک کنه که خوشه‌بندی بهتر و همینطور تشخیص Anomaly و نویز خیلی خوبی داشته باشیم. حتی ممکنه جاهایی فقط هدفشون تشخیص موارد مشکوک یا همون Anomaly باشه.الگوریتم DBSCAN دقیقا چی هست؟عبارت DBSCAN مخفف Density Based Spatial of Application with Noise هست. اووف نفسم بند اومد. چقدر طولانی :) این الگوریتم تو سال ۱۹۹۶ توسط آقای Martin Ester اختراع شد. کلا این الگوریتم دو تا پارامتر مهم داره. یکی minPoints و یکی هم Epsilon. اما این دوتا چی هستن اصلا؟!پارامتر Epsilon نشون دهنده شعاع دایره ایه که دور هر نقطه برای تعیین چگالی اون به کار میره و همینطور minPoints حداقل تعداد داده‌ای رو نشون میده که باید تو دایره یه نقطه باشن تا اون نقطه هسته (Core) به حساب بیاد. نترسین همه اینا رو الان رو شکل یاد میگریم. اگه ابعاد زیادتر بشن دایره به ابرکره یا همون  HyperSphere تبدیل میشه. دقیقا وقتی تو SVM خط به Hyperplane تبدیل میشه. فرض کنید ما میخوایم داده‌های بالا رو خوشه‌بندی کنیم. الگوریتم ما میاد و دور هر نقطه یه دایره با شعاع Epsilon میکشه (مرکز هر دایره هم همون داده است) و هر نقطه رو یا هسته در نظر میگیره یا مرز و یا نویز. اگه بخوایم اصلاحات انگلیسیشونو بگیم هسته میشه Core Point و مرز میشه Border Point و در نهایت نویز هم میشه همون Noise :)  هسته (Core Point): داده‌ای که حداقل به تعداد minPoints دایره اون رو محاصره کرده باشه. مرز (Border Point): داده‌ای که کمتر از minPoints (بیشتر از یکی) دایره اون رو محاصره کرده باشن.نویز (Noise): داده‌ای که یدونه دایره اون رو محاصره کرده باشه.فرض کنید ما minPoints رو ۳ بگیریم. همونطور که میبینید داده‌های قرمز توسط حداقل ۳ دایره محاصره شدن که اونا رو هسته در نظر میگریم. داده‌های زرد توسط بیشتر از یه دایره ولی کمتر از ۳ دایره محاصره شدن و در نهایت داده‌های بنفش توسط کلا یدونه دایره محاصره شدن. برای محاسبه این فاصله‌ها از فاصله اقلیدسی استفاده میشه.دو مفهوم Reachability و Connectivityمفهوم Reachability یعنی اینکه دو داده به یکدیگر دسترسی مستقیم یا غیرمستقیم دارند و Connectivity به این معناست که دو داده تو یه خوشه یکسان هستن. برای اینکه این مفاهیم رو بیشتر درک کنیم سه معیار را تعریف میکنیم:دسترسی‌پذیری مستقیم بر اساس چگالی (Directly Density-Reachable)دسترسی‌پذیری بر اساس چگالی (Density-Reachable)اتصال بر اساس چگالی (Density-Connected)دسترسی‌پذیری مستقیم بر اساس چگالی (DDR) چیه؟نقطه X از نقطه Y معیار DDR رو داره اگه:داده X همسایه Y باشد به عبارتی فاصله اون از Y حداکثر Epsilon باشه.داده Y هسته یا همون Core Point باشه.همونطور که میبینید داده X از داده Y معیار DDR رو داره ولی برعکس این قضیه برقرار نیست چون  X هسته نیست. دقت کنید که فاصله بین X و Y هم کمتر از Epsilon هست.دسترسی‌پذیری مستقیم بر اساس چگالی (DR) چیه؟نقطه X از نقطه Y معیار DR رو داره اگه X از P2 معیار DDR داشته باشه و P2 از P3 معیار DDR داشته باشه. این زنجیره باید جوری باشه که نقطه آخر از Y معیار DDR داشته باشه. همونطور که میبینید نقطه X از P2 معیار DDR داره و P2 از P3 و در نهایت P3 از Y معیار DDR داره به همین خاطر میگیم X از Y معیار DR داره یا به عبارتی X از Y بر اساس چگالی دسترسی داره (غیرمستقیم).اتصال  بر اساس چگالی (DC) چیه؟نقطه X از نقطه Y معیار DC رو داره اگه نقطه O وجود داشته باشه که هم X و هم Y از اون نقطه معیار DR رو داشته باشن.همونطور که میبینید نقطه X از O و همینطور Y از O معیار DR رو دارن به همین خاطر میگیم X و Y تو یه خوشه هستن یا به عبارتی اتصال بر اساس چگالی دارن.چطور پارامترهای اولیه رو تعیین کنیم؟این الگوریتم خیلی به ست کردن مقادیر اولیه minPoints و Epsilon حساسه و با تغییر دادن این دوتا نتیجه کلا تغییر میکنه. نکته حداقلی که وجود داره اینه که مقدار minPoints باید حداقل از تعداد ابعاد مسیله یدونه بیشتر باشه. خب این خیلی واضحه که نمیتونیم minPoints رو برابر یک قرار بدیم چون هر نقطه یه خوشه جدا در نظر گرفته میشه. مقدار Epsilon خوب رو میتونیم از K-distance graph پیدا کنیم. همینطور میتونیم از Elbow که تو K-Means هم استفاده میشد کمک بگیریم.</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Tue, 16 Nov 2021 21:11:07 +0330</pubDate>
            </item>
                    <item>
                <title>دیتاست آپارتمان‌های تهران (House Price Tehran)</title>
                <link>https://virgool.io/@perfectcodder/%D8%AF%DB%8C%D8%AA%D8%A7%D8%B3%D8%AA-%D8%A2%D9%BE%D8%A7%D8%B1%D8%AA%D9%85%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%AA%D9%87%D8%B1%D8%A7%D9%86-house-price-tehran-itm77rdzlxfl</link>
                <description>اگه تو زمینه یادگیری ماشین یا علوم داده فعالیت میکنید. حتما مسیله house price prediction به گوشتون خورده. از این نوع دیتاست‌ها زیاد هست. دیتاست مربوط به خونه‌های بوستون آمریکا و ...اما این بار من اومدم یه دیتاست کامل برای آپارتمان‌های تهران ایجاد کردم. فرایند جمع‌آوری داده و تمیز کردن اون اگه به لطف پایتون نبود ممکن بود هفته‌ها طول بکشه. این دیتاست شامل ویژگی‌های زیر هست:متراژ به متر مربعتعداد اتاق‌هاپارکینگ دارد یا نهانباری دارد یا نهآسانسور دارد یا نهمنطقه و آدرس حدودی آپارتمانقیمت به تومانقیمت به دلار (دلار ۳۰ هزار تومان در نظر گرفته شده است)میتونید از دیتاست کامل رو از اینجا توی کگل ببینید. حتما با قند شکن وارد بشین. البته توی گیت‌هاب هم گذاشتم که اینجا در دسترسه. </description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Mon, 06 Sep 2021 17:30:11 +0430</pubDate>
            </item>
                    <item>
                <title>برنامه‌نویسی فانکشنال در پایتون - قسمت ۱</title>
                <link>https://virgool.io/cheyab-blog/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%81%D8%A7%D9%86%DA%A9%D8%B4%D9%86%D8%A7%D9%84-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%82%D8%B3%D9%85%D8%AA-%DB%B1-y1hm5ealxhyy</link>
                <description>برنامه‌نویسی فانکشنال چی هست؟با استفاده از این روش (Functional Programming) شما می‌تونید خیلی کدهاتون رو کوتاه‌تر و بهینه‌تر بکنید. به طور مثال فرض کنید که می‌خواین تمام عناصر یک لیست رو به عدد صحیح تبدیل کرده و در نهایت مربع آنها را حساب کنید. در یک خط می‌توان چنین کاری را انجام داد. بدون اینکه توضیح اضافه‌ای بدیم بریم سراغ آموزش کاربردی این پست :)۱. تابع Mapاین تابع یک شی قابل پیمایش (Iterable) مانند لیست و مجموعه را به همراه یک تابع دریافت می‌کند. سپس تمامی عناصر این شی ورودی را یکی یکی به تابع مربوطه می‌دهد و خروجی را جاگیزین می‌کند. دقت کنید که این تابع خروجی به شما می‌دهد و هیچ تغییری روی شی اصلی نمی‌دهد به عبارتی inplace نیست.۱.۱. مثال | یک لیست از رشته بگیرید و داده‌های آن را ابتدا به عدد صحیح تبدیل کنید.data = [&#039;1&#039;, &#039;2&#039;, &#039;3&#039;, &#039;4&#039;]
data = map(int, data)
print(list(data)) # [1, 2, 3, 4]تابع int یک ورودی می‌گیرد و عدد صحیح آن را برمی‌گرداند. ۱.۲. مثال | یک لیست از عدد بگیرید و مربع اعداد را حساب کنید.def square(n): return n * n
data = [1, 2, 3, 4]
data = map(square, data)
print(list(data)) # [1, 4, 9, 16]۱.۳. مثال | میخوایم یه لیست از کاراکترهای انگلیسی کوچیک رو یکی ببریم جلوتر.def encrypt(c):
    code = ord(c) + 1
    if code == 123: code = 97
    return chr(code)
chars = [&#039;a&#039;, &#039;b&#039;, &#039;z&#039;]
data = map(encrypt, chars)
print(list(data)) # [&#039;b&#039;, &#039;c&#039;, &#039;a&#039;]دقت کنید که برای تبدیل یک کاراکتر به کد اسکی از تابع ord استفاده می‌کنیم. کد اسکی حرف a برابر ۹۷ می‌باشد و کد اسکی حرف z برابر ۱۲۲ می‌باشد. پس از افزایش کد اسکی باید بررسی کنیم که اگر از ۱۲۲ گذشته باشد آن را به حرف a یا همان کد ۹۷ برگردانیم. در نهایت با استفاده از تابع chr کد را به حرف تبدیل می‌کنیم. این مثال را می‌توانیم کمی کوتاه‌تر کنیم.def encrypt(c):
    code = (ord(c) - 96) % 26 + 97
    return chr(code)
chars = [&#039;a&#039;, &#039;b&#039;, &#039;z&#039;]
data = map(encrypt, chars)
print(list(data)) # [&#039;b&#039;, &#039;c&#039;, &#039;a&#039;]با استفاده از عملگرهای ریاضی می‌توان به چنین چیزی پی برد. برای فهمیدن این بخش آن را مورد بررسی قرار دهید. کوتاه‌ترین روش که برای این مثال وجود دارد به صورت زیر است. فرض کنید می‌خواهیم در یک خط چندین حروف را دریافت کرده و آن‌ها را چاپ کنیم.print(*map(lambda c: chr((ord(c) - 96) % 26 + 97), input().split()))اما عملگر ستاره چیکار میکنه؟ این عملگر باعث میشه به اصطلاح عناصر خروجی map ما آنپک بشن. یعنی دیگه لازم نیست یه حلقه بزاریم و یکی یکی اونا رو چاپ کنیم. خودتون این بخش رو تست کنید.۲. تابع Filterاین تابع همونطور که از اسمش مشخصه دنبال یه سری از عناصری میگرده که ما می‌خوایم. این تابع رو یه شی قابل پیمایش اجرا میشه. به مثال‌ها به خوبی دقت کنید.۲.۱. مثال | اعداد زوج یک لیست را استخراج کنید.number = [1, 2, 3, 4, 5]
even = filter(lambda n: n%2 == 0, number)
print(list(even)) # [2, 4]به ازای عناصری که تابع به برای آنها مقدار صحیح برگرداند آن عنصر در لیست باقی می‌ماند وگرنه حذف می‌شود. اگه دقت کنید خیلی کاربرد داره. مثلا بخوایم که رشته‌های یه لیست که ویژگی‌های خاصی دارن رو استخراج کنیم :)۲.۲. مثال | حروف صدادار یک لیست را استحراج کنید.chars = [&#039;a&#039;, &#039;c&#039;, &#039;r&#039;, &#039;e&#039;, &#039;o&#039;]
vowels = filter(lambda c: c in &#039;aeiou&#039;, chars)
print(list(vowels)) # [&#039;a&#039;, &#039;e&#039;, &#039;o&#039;]به ترتیب خروجی دقت کنید. دقیقا از چپ به راست عناصر را فیلتر می‌کند. در کل وقتی بتوانید یک تابع که خروجی آن True و False است را پیاده‌سازی کنید به راحتی می‌توانید از فیلتر استفاده کنید.۳. معرف لیستبه راحتی می‌توانید لیست‌های خود را در یک خط تعریف کنید. به طور مثال فرض کنید می‌خواهیم اعداد ۱ تا ۱۰۰ را درون یک لیست قرار دهیم.[ i for i in range(1, 101)) ] # Method 1
list(range(1, 101)) # Method 2حال فرض کنید که بخواهیم مجذور اعداد یک تا پنجاه را درون یک لیست قرار دهیم.[ i ** 2 for i in range(1, 51) ]در نهایت یک سری عدد از ورودی می‌گیریم و علامت آن‌ها را تعیین می‌کنیم. اگر منفی باشند با عدد ۱- و اگر مثبت باشند با عدد ۱ نشان می‌دهیم. خیلی سادس :)[ (-1 if n &lt; 0 else 1) for n in map(int , input().split()) ]۴. مرتب‌سازیبا استفاده از تابع sorted می‌توانیم یک لیست را به هر نحوی مرتب کنیم. این تابع یک پارامتر مهم به نام key دارد که با استفاده از آن به تابع می‌فهمانیم چطور مرتب‌سازی را انجام دهد. فرض کنید می‌خواهیم یک سری تاپل را درون یک لیست مرتب کنیم. فرض کنید یک لیست داریم که هر عنصر شامل نام یک ماشین و قیمت آن می‌باشد. حال می‌خواهیم بر اساس قیمت به صورت نزولی و در صورت برابری بر اساس نام ماشین به صورت صعودی داده‌ها را مرتب کنیم. cars = [ (&#039;toyota&#039;, 17000), (&#039;benz&#039;, 25000), (&#039;audi&#039;, 25000) ]
result = sorted(cars, key = lambda car: (-car[1], car[0]))
print(result)
#output -&gt; [(&#039;audi&#039;, 25000), (&#039;benz&#039;, 25000), (&#039;toyota&#039;, 17000)]چونکه می‌خواهیم ابتدا بر اساس قیمت مرتب شود پس ابتدا عنصر دوم را درون تاپل مربوط به تابع مرتب‌سازی پارامتر key قرار می‌دهیم و منفی پشت آن به معنای آن است که به طور مثال عدد ۱ از ۲ مرتبه صعودی کمتری دارد. چون ۱ به ۱- و ۲ به ۲- تبدیل می‌شود (هنگام چک کردن برای مرتب‌سازی).۵. توابع کاربردیبرخی توابع هستند که به صورت خیلی ساده و کلی به کار می‌روند.تابع sum برای جمع کردن مقادیر عددی یک شی قابل پیمایش به کار می‌رود.تابع max برای پیدا کردن بزرگترین عضو یک شی قابل پیمایش به کار می‌رود.تابع min برای پیدا کردن کوچیکترین عضو یک شی قابل پیمایش به کار می‌رود.sum( [1, 2, 3, 4] ) # 10
min( [1, 2, 3, 4] ) # 1
max( [1, 2, 3, 4] ) # 4۶. چالش نهایی به شما یک آرایه از اعداد داده می شود. ما به یک عدد گوگولی میگیم اگه هم خودش بر ۶ بخش پذیر باشه و هم شماره‌ی جایگاهی که در آرایه ظاهر شده  بر ۶ بخش پذیر باشه :)توجه کنید که اندیس اولین عضو آرایه ۱ است. حال که شما فکر می کنید این سوال خیلی ساده است ما آن برای شما سخت می کنیم! شما باید این مسیله را فقط با یک خط حل کنید. بدون استفاده از سمی‌کالون.راهنمایی ۱  : به این شکل می‌توانید اعدادی را که اندیسشان بر ۶ بخش پذیر است را چاپ کنید.print(*list(map(int, input().split()))[5::6])راهنمایی ۲: به این شکل می‌توانید اعدادی را که زوج هستند را چاپ کنید.print(*(x for x in map(int, input().split()) if x % 2 == 0))در نهایت کد شما باید چنین چیزی باشد.*sorted(i for i in list(map(int, input().split()))[5::6] if x%6 == 0)</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Sat, 08 May 2021 01:22:59 +0430</pubDate>
            </item>
                    <item>
                <title>نقشه راه یادگیری پایتون</title>
                <link>https://virgool.io/coderlife/%D9%86%D9%82%D8%B4%D9%87-%D8%B1%D8%A7%D9%87-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-z6dktpahvbh2</link>
                <description>قبل از اینکه بدونید نقشه راه پایتـــــون چیه، پیشــــــنهاد می‌کنم این پست رو تو ویرگــــــول ببینید. خــــب حــــالا که می‌دونید پایتون چیه و چرا باید اونو یاد بگیرین شما رو به خوندن این پست دعوت می‌کنم.پایتونو عشقهیادگـــــیری هر زبان برنامه‌نویــــسی از دو بخــــش تشـکیل میشه. یکی مفاهیم پایه و اســـاســــی (Fundamental) و یکی هم مباحث پیشرفته (Advanced Topic) اون زبان برنامه‌نویسی. مفاهیم پایه تو پایتـــون خیلی راحتن و  اونا رو خیلی راحت میشه توی چند هفته (حداکثر ۲ ماه اگه اولین بارتون باشه میخواین برنامه‌نویسی کنید) یــاد گرفت. من تو این پست اول به تشریح نقشه مفاهیم ساده‌تر می‌پـردازم و بعد ســـــراغ مباحث پیـــشرفته می‌رم.توجه : دسته‌بندی مفاهیم پایتون تو این پست بر اساس تجربیات خود من هست نه منبع خاصی.۱. مفاهیم پایه و اساسی (Fundamental Of Python)فرض کنید می‌خواین یه برنامه بنویسین که براتون کارای محاسباتی انجام بده و یا اینکه بخواین تو یه مـــــسابقه حل مسئـــــــــله شرکت کنید. تا حالا فکر کردین بعضی وقتا که می‌خواین فایل‌های خودتون رو مرتب کنید خیــلی ازتون وقت می‌گیره! همه اینا رو با مفاهــــیم مقدماتی و پایه پایــــتون می‌تونید به راحتی انجام بدین. می‌تونید با داشتن تفکر الگوریتمی و ریاضیـــاتی و دونستن حداقلی از پایــــــتون توی مسابقات شرکت کنید و به سرعت برای سوالا کد بزنید، چون پایتون کد زدن رو آسون میکنه!۱.۱. ورودی و خروجیاولین مفـــهــــومی که توی هر زبان برنامــــه‌نویـــــسی یاد میــگـــیرین نحوه دریـــــافـــــت ورودی استـــاندارد (STDIN) و نحوه ارسال خروجی استاندارد (STDOUT) هست. شاید بخواین از کاربر یه مقداری رو دریافت کنید یا شایدم بخواین یه چیزایی رو به کاربر نشون بدین.۱.۲. متغیرها و انواعشونفرض کنید از کاربر یه عدد میگیرین و می‌خواین بعدا از اون استفاده کنید ولی نمی‌دونـید اونو کجا ذخیره کنید؟! متغیر چیزیه که شما باید تو این شرایــــط ازش استفاده کنید. متغیرا تو زبــانای برنامه‌نویسی دقیقا مثل متغیرها تو جبر ریاضی میمونن. مثلا عدد ۱۵ رو توی متغیری به اسم X قرار می‌دیم و بعدا اگه بگیم X منظـورمون همون عدد ۱۵ هست. توی زبان برنامه‌نویسی علاوه بر اعداد حقیق میتونــــــــیم از متغــــــیرا برای ذخیره کردن کاراکترها، رشته‌ها و مقادیر منطقی (صفر و یک) استفاده کنیم. به طور کلی تو پایتون چند نوع متغــــیر وجــــود دارن که به صورت زیر هستن.رشته‌ها (String)منطقی (Boolean)اعداد اعشاری (Float)اعداد صحیح (Integer)۱.۳. دستورات کنترلیبرای انجام کارای تکراری از دستورات کنترلی مثل حلقه for و while استفاده میشه. همینطور بــرای شرط‌گذاری تو پایتون از دستورات if و else و ترکیب این‌ دوتا یعنی elif استفاده میکنیم. دانشمندای کامپـیوتر میگن که هر برنامه‌ای تو دنیا به یه سری متغیر و دستورات کنــــــــترلی ساده ختــــم میشه. یعنی اینکه این دستورات مهمترین ساختار هر زبان برنامه‌نویسی هستن.۱.۴. توابع و کاربردشونبعضی موقع‌ها می‌خواین یه کار رو چندین بار انجام بدین. برا اینکه یه ساختار داشته باشین که با اســتفــــــاده از اون یه سری از کارا به صورت خودکـــــــار انجام بشه از تابع استفاده می‌کنیم. تابع دقــــــــیقا مثل مفهوم تابــــــع تو ریاضیه. بعضی از توابع ورودی میگیرن و بعـــضـــیـــــاشون نمی‌گیرن. به هر حال بســــتــــگی به هدفــــــمـــــون داره. تو پایتون دو نوع تابع وجود داره که الان براتون میگم.توابع ساده (Simple Function)توابع ناشناس (Lambda Function)از نظر من شما باید حداقل با توابع زیر آشنا باشید و بتونید کارای مختلفی با اونا انجام بدین. یاد گرفـــــــتن توابع متفاوت تو یه زبان برنامه‌نویسی این قدرت رو به شما میده که کدتون رو به صورت تمیز‌تر بنویــــــسید و این نکته رو فراموش نکنید که این توابع توسط افراد خبره‌ای پیاده‌سازی شـــده‌اند که با این وجود بســـــیار بهینه‌ می‌باشند.تابع map که روی یه شئ قابل پیمایش اجرا می‌شه و همه مقادیرو طبق خواسته شما تغییر می‌ده.تابع sum که مجموع مقادیر یه شئ قابل پیمایشو محاسبه می‌کنه.توابع min و max که به ترتیب کمترین و بیشترین مقدار یه شئ قابل پیمایشو پیدا می‌کنه.تابع filter که مقادیر خاصی از یه شئ قابل پیمایشو برا شما پیدا می‌کنه.تابع any که چک میکنه آیا حداقل یکی از مقادیر یه شئ قابل پیمایش شرایط اعلام‌شده رو داره یا نه.تابع all که چک میکنه آیا همه مقادیر یه شئ قابل پیمایش شرایط اعلام‌شده رو دارن یا نه.۲. ساختمان‌داده‌ها (Data Structures)وقتی این همه داده و اطلاعات اطراف خودمــــون می‌بینیم باید انتظار داشـــــته باشیـــم این هــــمه داده به صورت خیلی ساده و بدیهی مدیریت و سازماندهی نمی‌شن. نحوه ذخیره‌سازی داده‌ها روی سرعت و نحـوه دسترسی به اونا و پیدا کردن یه مقدار مشخص بین انبوهی از اون داده‌ها تاثیر‌گذاره. هر ساختمان داده یه ساختار مشـخص داره که داده رو به یه روش مشخص توی خودش ذخیـــــره می‌کنه و البته برای دستــــرســـــی به داده‌ها هم روش خاص خودش رو داره. ساختمان‌داده‌ها و طراحی الگوریتم یکی از مهم‌ترین درسای دانشگاهه که یه مهـــنـــــدس کامپیوتر باید روی مفاهیم اونا تسلط داشته باشه. اما مهمترین و ساده‌ترین ساخـــــــتمان‌داده‌هایی که تو پایتون هستن رو تو ادامه می‌تونید ببینید.۲.۱. لیست‌ (List)بوقتی که می‌خوایم یه سری از اطلاعـات رو پیش هم نگه داریم از لیست استفاده می‌کنیم. به طـــور کلـــی شاید اسم آرایه (Array) رو شنیده باشید. آرایه‌ها به دو نوع پویـــــا (Dynamic) و ایســــــتا (Statistic) نقسیم می‌شن. آرایه ایستا محدودیت‌های زیادی داره ولی ســـــرعت اون نسبت به آرایه پویا خیــــــلی بیشتره. محدودیت‌هایی که آرایه ایستا داره به این صورته.همه مقادیری که توی این نوع آرایه ذخیره می‌شن هم نوع هستن مثلا همشون عدد صحیح باشن.تعداد مقادیری که می‌خوایم توی این نوع آرایه ذخیره کنیم باید از قبل مشخص بشه.اضافه کردن یه مقدار جدید به آرایه بعد از تعریفش امکان‌پذیر نیست.و ...اما آرایه‌های پویا با وجود سرعت کم همه‌ی معایــــــــــــب آرایه ایستا رو برطرف می‌کنن و به هــــــمین خاطر بوجود اومدن. پایتون از آرایه پویا استفاده می‌کنه. به طور کلی به آرایه‌های پویا لیـــــست هم ‌میگن. عملــــیات‌هایی که روی یه لیست می‌تونید انجام بدین به این صورتن.اضافه کردن یک یا چند مقدار مشخصحذف یه مقدار مشخصپیدا کردن یه مقدار مشخصدسترسی به یک یا چند مقدار توی مکان‌‌های (Indices) مشخص۲.۲. مجموعه (Set)این ساختارها دقیقا مثل مجوعه‌ها تو ریــــــاضی می‌مــونن با این تفاوت که میشه تو اونا متـــــــغیرهــــــــایی از نوع مختلفی ذخیره کرد. تفاوت‌های مجموعه نسبت به لیست به این صورته.سرعت دسترسی و پیدا کردن یه مقدار مشخص تو مجموعه خیلی بیشتره.ترتیب مقادیر از الگوی مرتبی مثل ترتیب مقادیر لیست پیروی نمی‌کنه.بعد از ایجاد یه مجموعه شما احتمالا نیاز دارین یه سری عملیات روی اون انجام بدین. عملیات‌هایی که روی یه مجموعه می‌تونید انجام بدین به شکل زیر هستن.اضافه کردن یه مقدار مشخصحذف یه مقدار مشخصپیدا کردن یه مقدار مشخصادغام کردن دو مجموعهاجتماع (Union) و اشتراک (Intersection) بین دو مجموعهتفاضل (Subtraction) و تفاضل تقارنی (Symmetric Subtraction) بین دو مجموعه۲.۳. لغت‌نامه (Dictionary)فرض کنید می‌خــــــــــواین به جای اســــــتفاده از اندیس عددی به عنوان دسترسی به مقادیــــر یه لیست از اندیس رشته‌ای هم بتونید اســــتفاده کنید. یعنی مثلا به جای اینکه‌ بگــــین خونه اول مـــــقدارش چـــــنده بگــــین خونـــه‌ی ساریـــنا مقــــدارش چنده. مثلا مــــــی‌تونید سن هر نفر رو با توجه به اســــمش ذخیره کنید. هر مقـــــداری که توی لغـــــــــت‌نامه قرار می‌گیره یه کلید (Key) متمیاز و یه مقــــــدار (Value) مشخص داره. کلـــــید مثل همون اندیس می‌مونه تو آرایه و لیست. عملیات‌هایی که می‌تونید روی یه لغت‌نامه انجام بدین به این صورتن.اضافه کردن یه مقدار با کلید مشخصحذف یه مقدار مشخص با کمک کلید اونپیدا کردن یه مقدار مشخص با کمک کلید اونادغام کردن دو لغت‌نامهدسترسی به مقادیر و کلید‌ها به صورت مستقل۳. کتابخونه‌های مفید و کاربردی (Useful Libraries)خیلی از کاراتون رو می‌تونید با کتابخونه‌های آماده که توی پایتون به صورت پیش‌فرض وجود داره انجام بدین. به طور کلی تعداد خیلی زیادی کتابخونه تو پایتون هست که من چندتا از اون را براتون میگم.۳.۱. کتابخونه ریاضیبا استفاده از این کتابخونه که تو پایتون به نام math قابل استفاده است می‌تونید کارای محاســباتی و ریاضیاتی مختلفی انجام بدین. توابع و مقادیری که توی این کتابخونه هست به صورت زیر دسته‌بندی میشن.توابع جبری مثل بزرگترین مقسوم‌علیه مشترک، قدر مطلق، جزء صحیح و ...توابع مثلثاتی مثل سینوس، کسینوس، ثانژانت و ...توابع توانی و لگاریتیمی مثل لگاریتم، توان، جذر و ...مقادیر کاربردی مثل عدد پی، عدد نپر، مقدار فرضی بی‌نهایت و ...۳.۲. کتابخونه زمان و تاریخبا استفاده از این کتابــــخونه که تو پایــــتون به نام datetime قابل استفاده است می‌تونید با تاریــــخ و زمان بازی کنید. بعضی‌ کارای شـــــما نیاز داره که به تاریــــــخ یه زمان مشخص دسترسی داشته باشین. کارای جالــــــبی که با استفاده از این کتابخونه می‌تونید بکنید به شکل زیر هستن.دسترسی به زمان و تاریخایجاد مقایسه بین دو یا چند تاریخ و زمان مشخصاستفاده از قالب‌بندی زمان و تاریخ مشخص و متنوع۳.۳. کتابخونه کار با سیستم‌عاملاین کتابخونه مثل یه خط فرمان کنترل کل سیســــــــتم‌عامل رو به شـــــــما میده. فرض کنید می‌خــــــواین یه سری از فایل‌هاتون رو مرتب کنید. با کمک این کـــتــابـــخــونــه این کار رو با کمترین زمان ممــــکن می‌تونید انجام بدین. مهم‌ترین کارای مختلفی که با این کتابخونه میشه انجام داد به شکل زیر هستن.تغییر نام فایل‌هاانتقال فایل‌هاایجاد و حذف پوشه‌هاپیمایش ساختار درختی پوشه‌ها و فایل‌هااستفاده از خط فرمان سیستم‌عاملاما برای اینکه بتونید به صورت کاربردی‌تر از این کتابخونه استفــــاده کنید بهتره که کار با فایل‌ها و به عبارتی I/O رو تو پایتون بلد باشــــــین. دستـــــورات کار با فایل به صورت پـــــیش‌فرض تو پایتون هستن و لازم به اســــتفاده از کتابخونه خاصی نیست. کارایی که می‌تونید با استفاده از این دستورات انجام بدین به این شکل هستن.ایجاد فایل‌های متنی و باینریویرایش فایل‌های متنی و باینریکپی کردن فایل‌های متنی و باینریدر دنیا قالب‌های خاصی برا ذخیره‌سازی داده‌ها در قالب فایل‌های متنی ارائه شده. به عنـوان مثــال می‌تونیم به قالب اکس‌ام‌ال (XML)، جی‌سون (JSON) و سی‌اس‌وی (CSV) اشاره کرد. پایتون دارای یـــک کــتــابــخانه به نام json می‌باشد که می‌توانید از آن برای کار با قالب جی‌سون استفاده کنید.۴. مباحث پیشرفته‌ (Advanced Topic)خب دیگه بعد از معرفی کلی ساختارهای اصلی پایتون وقتشه که یه سر به مفاهیم پیشرفته بزنــــیم. با توجه به پیشرفته بودن این مفاهیم یاد گرفتن اوناهم نسبت به مباحث قبل ســـخــــــت‌تـره. خب بریم سراغ این مفاهیم.۴.۱. برنامه‌نویسی شئ‌گرایی (Objected Oriented Programming)با استفاده از این مفهوم می‌تونید چیزایی که توی دنیای واقعی وجود داره رو تو پایتون شبــیـــه‌ســــازی کنید. توی پایتون شما می‌تونید متغیر عددی، رشته‌ای، منطقی تعریف کنید ولی شاید بخواین یه متغیر از نـــوع انـــســان یا اتومبیل تعریف کنید :) با این وجود یاد گرفتن این مفهوم و انس گرفتن با مفهوم بسیار قشنگ شـــئ‌گـــرایـــی تو درک مفاهیم پیچیده برنامه‌نویسی کمکتـــــــون میکنه. مفاهیم اصلی که تو پایتـــــون در زمــــینه شـــــئ‌گرایی وجود دارن به شکل زیر هستن.کلاس‌های ساده، والد و فرزندمفهوم ارث‌بریتوابع ایستا، شخصی، نیمه شخصی و ...انواع دسترسی‌هاکپسوله‌سازی و انواع متغیرهاو ...۴.۲. پردازش‌های موازی و تردها (Parallel Processes &amp; Threads)شاید بخواین یه سری کارها رو باهم انجام بدین. مثلا اگه یه سایت داشته باشین و بخــواین بــه یه میلیون نفـــر نفر از اعضای وبسایت تو یه لحظه پیام بدین اگه به صورت همروند انجام نشه باید به ترتیب و یکــــــی یکـــــــی به افراد پیام داده بشه. به طور مثال اگه دادن هر پیام ۲ ثانیه از وقت CPU رو بگیره آخــــرین نفر بعد از ۲,۰۰۰,۰۰۰ یعنی حدود ۲۳ روز پیام رو دریافت میکنه. ۲۳ روز خیــــــــــــلی زیاده برا جلوگیری از این کارا از پردازش مــــــــوازی استفاده می‌کنیم.۴.۳. برنامه‌نویس سوکت (Socket Programming)برا برنامه‌نویسی تو محیط شبکه از این مفهوم و ساختار استفاده می‌کنیم. مثلا می‌خواین یه برنامه بنویسین که یه سری دستور رو از طریق کامپیوتر شماره ۱ شـــبکه و کامپیوتر شماره ۲ شـــبکه ارسال کنه یا حتی شاید بخواین یه چت‌روم توی شبکه خصوصی خودتون با پایتون بسازین.۵. معرفی چندتا از برنامه‌های ساده پایتونی خودمتو این بخش می‌خوام ســــه‌تا از برنامه‌هایی که خــــودم وقتی تازه مفاهـــیم بالا رو تو پایتون تموم کرده بـــودم رو بهتون توضیح بدم. بریم سراغ برنامه‌ها :)۵.۱. ترک سیگاراین برنامه خیلی سادست ولی خب یکم جالبه. شما به برنامه می‌گین که می‌خواین سـیگار بکشین و برنامه چک می‌کنه اگه شما تو دو ساعت گذشته سیگار نکشیده باشین بهتون میگه بـــازم می‌خــــوای بــکــشی؟ و بعد از تایید شما تاریخ و زمان اون لحظه رو ثبت می‌کنه. اما اگه تو دو ساعت گذشته سیگار کشیده باشـــــین بهتون میگه که چقدر مونده تا بتونید یه سیگار دیگه بکشین.۵.۲. چت‌روم دو نفره آفلایناین برنامه دو تا بخش داره یکی کلاینت و یکی هم سرور. ابتدا سرور یه پورت و آی‌پی از شما می‌گـــیره و طـــــــبق اون یه سوکت رو شبکه ایجاد می‌کنه. بعدش شما با کلاینت به اون آی‌پی و پورت وصل می‌شین. الـان می‌تونید دونفره با هم چت کنید. مثلا می‌تونید سرورو رو لپتاپتون اجرا کنید و با اجرای کلاینت رو گوشـــیتــون به لپـــتــــاپ وصل بشین.۵.۳. شجره‌نامه (FamilyTree)تو این برنامه علاوه بر مفاهیم پایتون مفاهیم ساخــــــتمان‌داده درخــت رو هم باید بدونید. اعضای خونوادتون رو به این برنامه می‌دین و بعد از اون می‌تونید به این اطلاعات به صورت ساختار‌یافته و سازماند‌هی شده دسترسی داشته باشین. مثلا اگه بگین که پسر شما نسبتش با پدرتون چیه برنامه میگه که نوه پسری.۶. متخصص پایتون (Python Expert)خب این همه توضیح دادیم حالا نهایتا شما باید بعد این همه یادگـــیــــری چیکار کنید. الـــبته بایــد بــگــــم که من مطالب رو گسترش دادم وگرنه اگه علاقه داشته باشــین یادگیری این مفاهــــیم خیلی براتون شـــــیـــرین و جذاب میشه. بعد از یـــــادگیری این مــفــاهــیـــم شـما باید حوزه موردنظر خودتون رو انتخاب کنید. اینکه می‌خـــواین وارد هـــــــوش‌مصــــــنوعی بشین یا طراحی وبســــایت یا تحلیل داده و چــندین حوزه دیگه. به طور کلی حــــوزه‌هایی که می‌تونید انتخاب کنید به صورت زیر هستن. توسعه وبسایت به کمک کتابخونه‌های Django و Flaskدانشمند داده یا مهندس یادگیری ماشینی به کمک تعداد خیلی زیادی کتابخونهبرنامه‌نویس علمی جهت انجام کارهای محاسباتی و ...و ...۷. منابع یادگیری پایتونپایتون چون خیلی زبان محبوبیه منابع زیادی برای یادگیریش وجود داره. دورهای زبان اصلی زیــادی از انتشارات یودمی و سایر انتشارات مـــعـروف دنیا توی سایت فرین‌مدیا در دسترسی هست. اما می‌تونم بـــگم قــــوی‌تـــریـــن آموزش فارسی برا پایتون آموزش تعاملی سایت کوئرا هست. این آموزش تمامی ســـرفصل‌ها رو با تــمـــرین‌های مربوطه در اختیار شما قرار میده. این آموزش ساعت‌ها و ساعت‌ها برای طـــــــراحی و بهبود زمان برده. دوره کو‌ئرا روز به روز توسط فیدبک‌های شما عزیزان توسط این تیم در حال بهبوده.با تشکر؛ محمدرضا کریمی‌نژاد کوچکترین عضو کوئرادستیار آموزشی دانشگاه شمسی‌پور، برنامه‌نویس و پشتیبان علمی کوئرا</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Fri, 17 Apr 2020 21:48:00 +0430</pubDate>
            </item>
                    <item>
                <title>نقشه راه یادگیری ماشین لرنینگ</title>
                <link>https://dataio.ir/نقشه-راه-یادگیری-ماشین-cv1clucrmqoq</link>
                <description>برای یادگیری ماشین لرنینگ دو راه وجود دارد که در ادامه این پست با نقشه راه، مزایا و معایب هرکدام آشنا می‌شوید. من شما را با مفاهیم آشنا می‌کنم ولی انتخاب را به خودتان واگذار می‌کنم. البته قبل از انتخاب دقت کنید که باید با یک زبان برنامه‌نویسی مناسب (مثل پایتون) آشنایی کامل را داشته باشید. اگر زبان مورد نظر شما پایتون می‌باشد، انتظار می‌رود باسرفصل‌های زیر در پایتون به طور کامل آشنا باشید. منطق ریاضی (Logic)متغیرها (Variables)عملگرهای ریاضیاتی (Mathematical Operators)دستورات شرطی (Conditional Statement)حلقه‌های تکرار (Loops)لیست‌‌ها (Lists)مجموعه‌‌ها (Sets)لغت‌نامه‌ها (Dictionaries)محدوده‌ و فضای نام (Namespace &amp; Scope)توابع (Functions)کلاس‌ها (Classes)اگر آشنایی کافی با زبان برنامه‌نویسی پایتون ندارید راه‌های مختلفی برای یادگیری این زبان قدرتمند و در عین حال ساده وجود دارد. می‌توانید از فیلم‌های آموزش و دوره‌های آموزش تعاملی و ... استفاده کنید. اگر نیاز به راهنمایی بیشتری داشتید به این آیدی در تلگرام مراجعه کنید. درضمن نقشه راه یادگیری پایتون به زودی در پستی دیگر منتشر می‌شود.نقشه راه اول در این روش لازم است با گذراندن یک دوره جامع ماشین لرنینگ به هدف خود برسید. در نتیجه شما باید با مفاهیم ماشین لرنینگ آشنا شوید. برای این کار دوره‌های متنوعی وجود دارد که توسط موسسه‌‌های معتبر و بزرگ مانند لیندا، کورسرا، یودمی و ... منتشر شده‌اند. در این روش شما باید دوره‌هایی را بگذرانید که در آن‌ها مفهوم ماشین لرنینگ به کمک زبان برنامه‌نویسی ارائه می‌شوند. همچنین در این بین شما باید با کتابخانه‌های مربوط به داده و ماشین لرنینگ زبان پایتون را فرا بگیرید. هرچند دوره‌‌های وجود دارد که همه‌ی مطالب را درون خودشان گنجانده‌اند. در نقشه راه دوم به توضیح و معرفی این کتابخانه‌ها پرداخته‌ایم.معایب و مزایادر این روش شما بدون اتلاف وقت روی یادگیری سایر مفاهیم مثل آمار، احتمال، ریاضیات پیوسته و گسسته و ... به طور مستقیم سراغ یادگیری ماشین لرنینگ می‌روید. در نتیجه در طول یک الی سه ماه ماشین لرنینگ را فرا می‌گیرید. در این بین شما تنها چیزی که اصولی یاد گرفته‌اید زبان پایتون می‌باشد و از لذت درک کامل و قدرت پیاده‌سازی الگوریتم‌های ماشین لرنینگ و همچنین درک ارتباط آن‌ها بین آمار، احتمال و ریاضیات را از دست می‌دهید. نقشه راه دوماین راه بر خلاف راه قبلی دارای پیش‌نیازهای متعددی می‌باشد. قبل از یادگیری ماشین لرنینگ باید با مفاهیم زیر به طور کامل آشنا باشید. ریاضی حسابان (Calculus)این درس همان ریاضی عمومی ۱ در دانشگاه می‌باشد. الگوریتم‌های متعددی در ماشین‌لرنینگ با مفهوم مشتق و انتگرال سروکار دارند. همچنین برای درک آمار و احتمال باید با مفاهیم حد و پیوستگی، مشتق و اتگرال آشنا باشید. به طور کلی می‌توانید از سرفصل‌های زیر برای یادگیری حسابان استفاده کنید.تابع و انواع آن (Functions)حد و پیوستگی (Limit &amp; Continuity)مشتق و مشتق‌پذیری (Derivative &amp; Differentiability)انتگرال (Integral)منابع زیادی برای یادگیری حسابان وجود دارد. اما بهترین منبع برای یادگیری عمیق و مفهومی این سرفصل‌ها دوره حسابان موسسه خان‌آکادمی می‌باشد. این آموزش توسط یکی از اساتید برجسته دنیا و دانشگاه‌های آمریکا تهیه شده و به صورت رایگان در اختیار عموم قرار دارد. پیشنهادی که در یادگیری حسابان می‌توان داد یادگیری آن به صورت مفهومی و عمیق باشد نه به صورت تستی و کنکوری!آمار و احتمال (Statistics &amp; Probability)از آنجایی که پایه مفاهیم ماشین لرنینگ از آمار و احتمال گرفته شده‌است آشنایی و تسلط به آمار و احتمال کمک زیادی به درک مفاهیم آن می‌کند. الگوریتم‌های هوشمند معمولا وقتی بین چندراهی قرار می‌گیرند و نیاز به انتخاب یکی از آن‌ها را دارند طبیعتا راهی را انتخاب می‌کنند که احتمال مطلوب بودن آن از بقیه بیشتر است و با این وجود نیاز به درک احتمال برای پیاده‌سازی بخش عظیمی از الگوریتم‌ها بوجود می‌آید. برای جمع‌آوری و تحلیل داد‌ه‌ها از علم آمار کمک می‌گیریم. البته گاهی احتمال و آمار هردو به حل یک مسئله کمک می‌کنند.از نظر من بهترین منبع زبان فارسی برای یادگیری آمار و احتمال دوره استاد شریفی زارچی مدرس علوم رایانه در دانشگاه شریف (مکتبخونه) و همین‌طور دوره آمار و احتمال خان‌آکادمی نیز بسیار مفید می‌باشد. پیشنهاد می‌کنم در کنار دوره‌های آموزشی، کتاب آمار و احتمال انتشارات زیر ذره‌بین را نیز مطالعه فرمایید. سرفصل‌های پیشنهای برای یادگیری آمار و احتمال به این شکل می‌باشد.مفهوم ماشین لرنینگ (Theoretical Machine Learning)بعد از آشنایی با حسابان و آمار و احتمال وقت آن رسیده که به ماشین لرنینگ سلام کنید. برای درک بهتر ابتدا با مفهوم ماشین لرنینگ آشنا شوید. برای یادگیری مفوم و تئوری ماشین لرنینگ این دوره به شدت پیشنهاد می‌شود.کتابخانه‌ها ضروری پایتون (Necessary Python Libraries)برای وارد شدن به ماشین لرنینگ به صورت عملی (Practical) لازم است با کتابخانه‌های زیر به نسبت خوبی آشنا باشید. البته ممکن است در یک دوره کتابخانه‌های دیگری نیز معرفی شوند و کتابخانه‌های زیر همه مهم و در همه دوره‌ها مشترک می‌باشند.محسابات علمی (Numpy)مصورسازی (Matplotlib)مصورسازی (Scipy)ذخیره، طبقه‌بندی و دستکاری داده‌ها (Pandas)ماشین لرنینگ در عمل (Practical Machine Learning)اگر به این مکان از نقشه رسیده‌اید یعنی پایه‌های شما برای حل مسائل واقعی آماده شده است و به این بابت به شما تبریک می‌گویم. احتمالا خودتان ادامه راه را می‌دانید. یک دوره ماشین لرنینگ با پایتون می‌تواند به طور عجیبی تاثیر گذار باشد. چراکه با تمام مفاهیم از قبل آشنا شده‌اید و کافی است آن‌ها را به صورت عملی به کار ببرید. تمرین، تمرین، تمریندر اینجا شما باید به شدت تمرین کرده و از داده‌های موجود در اطرافتان (مثل وبسایت کگل) برای تحلیل و حل مسائل استفاده کنید. چند مورد از این مسائل را می‌توانید در زیر ببینید.تشخیص سرطانمسافران کشتی تایتانیکتشخیص میوه‌های سالمتشخیص چهره راهنماییاگر نیاز به راهنمایی بیشتری دارید یا این‌که حس می‌کنید قدرت انتخاب بین دو راه موجود را ندارید می‌توانید به این آیدی در تلگرام مراجعه کنید.</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Fri, 14 Feb 2020 02:23:24 +0330</pubDate>
            </item>
                    <item>
                <title>کوتاه‌ترین و بهینه‌ترین روش Memoization (پایتون)</title>
                <link>https://virgool.io/@perfectcodder/%D8%B3%D8%A7%D8%AF%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-memoization-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-tj1itzrkbhpe</link>
                <description>نکته : برا درک محتوای این پست باید مفهوم Memoization را از قبل بدونید.وقتی بخوایم برا یه مسئله یا الگوریتم تابعی بازگشتی بنویسیم ممکنه این تابع محاسبات تکراری داشته باشه به عبارتی مسئله Overlapping Subproblems باشه.درصورت برخورد با چنین مسائلی برا بهینه کردن الگوریتم و کاهش زمان اجرای اون از برنامه‌نویسی پویا یا همون Dynamic Programming استفاده می‌کنیم. برای حل مسئله به کمک Dynamic Programming دو روش کلی وجود داره :حل زیرمسائل (Subproblems) از پایین به بالا (Buttom-Up)حل زیرمسائل از بالا به پایین (Top-Down) توجه : روش دوم همون Memoization است.فرض کنید می‌خوایم جمله nاُم فیبوناچی رو حساب کنیم. برا این‌کار کافیه که تابع بازگشتی اونو پیاده‌سازی کنیم، اینطوریه :def fib(n) : 
    if n &lt;= 2 : return 1
    return fib(n-1) + fib(n-2)زمان اجرای الگوریتم بالا نمایی (Exponential) هست. همونطور که می‌دونید توابع نمایی رشد سریعی دارن و سرعت الگوریتمی که از زمان اجرای اون نمایی باشه خیلی کنده.برا بهینه‌سازی می‌تونیم از برنامه‌نویسی پویا استفاده کنیم. اگر بخوایم تابع بالا را به‌صورت بالا به پایین حل کنیم می‌تونیم از حافظه کمک بگیریم که در مثال زیر از یک دیکشنری استفاده کردیم : memo = { 1:1, 2:1 }
 def fib(n) :
    global memo
    if n not in memo :
        memo[n] =  fib(n-1) + fib(n-2)
    return memo[n]و اما مهمترین بخش این پست، چطوری این‌کار رو به ساده‌ترین و سریع‌ترین روش انجام بدیم؟به کمک ابزار lru_cache در کتابخانه functools این‌کار امکان‌پذیره.اگر به بالای هرتابع عبارت که پایین اومده رو اضافه کنیم مثل اینه که Memoization رو پیاده‌سازی کردیم چراکه داده‌ای که از تابع برمی‌گرده تو یه فضای مخصوص (cache) توسط پایتون ذخیره میشه.@functools.lru_cache(None)توجه : برای استفاده از lru_cache باید کتابخانه functools رو فراخونی کنیم.اینطوری تابع فیبوناچی رو دوباره پیاده‌سازی می‌کنیم :import functools
@functools.lru_cache(None)
 def fib(n) :     
 if n &lt;= 2 : return 1     
 return fib(n-1) + fib(n-2) می‌بینید که کد تابع مثل همون روش ساده بازگشتیه.شاید بگین این که زیاد فایده نداشت و کدمون همونطوریه تقریبا ولی بیشتر موقع‌ها Memoization مثل الان راحت نیست و حافظه‌ای که استفاده میشه سرعت کد شما رو کند میکنه. اون موقع است که با این روش خیلی حال می کنید :)روش کلاسیک Memoization برای حل یه الگوریتم‌ (Longest Palindromic SubSequence) :memo = {}
def LPS(s, i, j):
    global memo
    if i &gt; j :         
        return 0   
    if (i, j) not in memo:   
        if i == j :
            memo[(i, j)] = 1
        elif s[i] == s[j] :    
             memo[(i, j)] = LPS(s, i+1, j-1) + 2  
         else :
             memo[(i, j)] = max(LPS(s, i, j-1), LPS(s, i+1, j)) 
     return memo[(i, j)]بهره‌گیری از lru_cache برای حل همون الگوریتم‌ :import functools
@functools.lru_cache(None)
def LPS(s,i,j):
    if i == j :
        return 1
    if i &gt; j :
        return 0
    if s[i] == s[j]:
        return LPS(s, i+1, j-1) + 2  
    else:
        return max(LPS(s, i, j-1), LPS(s, i+1, j)) شاید باز با خودتون بگین این که زیاد فرقی نمیکنه (از نظر حجم کد) ولی سرعت کد دوم بیشتره و این سرعتو تو محاسبات بزرگ میشه کامل درک کرد.</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Tue, 21 May 2019 22:27:53 +0430</pubDate>
            </item>
                    <item>
                <title>اصلا پایتون چی هست؟</title>
                <link>https://virgool.io/coderlife/%DA%86%D8%B1%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-h0fdleoblz3k</link>
                <description>پایتون یه زبان برنامه نویسی چند منظوره و اسکریپتی هست که توسط خودوفان روسوم هلندی در سال ۱۹۹۱ طراحی شده و امروزه اسمش تو کل دنیا پیچیده. زبان برنامه نویسی پایتون یک زبان شیء گرا است.منظور از اسکریپتی بودن پایتون چیه؟یعنی در حالت معمول به فایل اجرایی تبدیل نمیشه بلکه یک ماشین مجازی (مفسر پایتون) کد رو میخونه و همزمان آن را تفسیر و اجرا میکنه. یعنی شما می تونید یه برنامه واسه سیستم‌عامل ویندوز بنویسید و اون رو بدون تغییر روی لینوکس یا مکینتاش یا هر پلتفرمی که پایتون رو اون نصبه، اجرا کنید.کاربرد پایتونکاربرد پایتون در زمینه های مختلفیه :آنالیز داده‌هاهوش مصنوعییادگیری ماشینیتوسعه وبتحلیل داده‌های بزرگ در علوم و صنایعو . . .همونطور که تو بخش بالا گفتیم پایتون یه زبان برنامه نویسی چند منظوره است و کاربرد پایتون بیشتر از اون چیزیه که ما فکر می‌کنیم.مهترین ویژگی پایتون اینه‌که حجم کدی که استفاده میشه، فرض کنید می‌خوایم یه برنامه بنویسیم Salam.اگه این کارو با ++C انجام بدیم ایطنوری میشه :#include&lt;iostream&gt;
using namespace std;
int main(){
    cout &lt;&lt; &quot;Salam&quot;;
}ولی اگه با پایتون انجام بدیم به اینطوری میشه:print(&quot;Salam&quot;)</description>
                <category>محمدرضا کریمی‌نژاد</category>
                <author>محمدرضا کریمی‌نژاد</author>
                <pubDate>Tue, 21 May 2019 18:46:47 +0430</pubDate>
            </item>
            </channel>
</rss>