مرکز آموزش و رقابت برنامه نویسی پایتون

sort کردن دیکشنری

برای مرتب کردن یک دیکشنری بر اساس مقدار میتوانیم از دو روش زیر استفاده نماییم:

'''@author pythonchallenge.ir  @telegram @pythonchallenge'''

xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}

sorted(xs.items(), key=lambda x: x[1])
نتیجه
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

import operator

xs = {'a': 4, 'b': 3, 'c': 2, 'd': 1}

sorted(xs.items(), key=operator.itemgetter(1))
نتیجه
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]

۰ نظر موافقین ۰ مخالفین ۰

ادغام کردن دو تا دیکشنری

برای ادغام کردم دو دیکشنری بصورت زیر کد را می نویسیم. فقط دقت کنید که در ادغام به اینصور اگر کلید تکراری وجود داشت، کلید عنصر سمت چپ را فقط در نظر خواهد گرفت.


'''@author python.pythonchallenge'''

x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
z1 = {**x, **y}
z2 = {**y, **x}


print('z1 : ',z1)
print('z2 : ',z2)
نتیجه :

z1 :  {'a': 1, 'b': 3, 'c': 4}
z2 :  {'b': 2, 'c': 4, 'a': 1}
۰ نظر موافقین ۰ مخالفین ۰

استخراج ارقام از یک رشته

برای اینکه بتوانیم داخل یک رشته شامل عدد، تمام اعداد را بصورت تک به تک استخراج کنیم میتوانید از کد زیر استفاده نماییم.

'''@ author python.pythonchallenge'''

a = '1a3wer45R04iop'


digits = [int(''.join(i)) for i in a if i.isdigit()]

print (digits)

print ('sum: ',sum(digits))
۰ نظر موافقین ۰ مخالفین ۰

راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده - keras

برای دانلود راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده میتوانید از طریق لینک زیر اقدام کنید.

این بخش کتابخانه keras برای شبکه های عصبی را شامل می شود.


دانلود

۰ نظر موافقین ۰ مخالفین ۰

لیستی از کتابخانه‌ها علم داده در پایتون

NumPy سرنامی برای  Numerical Python است. قدرتمندترین ویژگی این کتابخانه، آرایه‌های n-بُعدی هستند. این کتابخانه همچنین شامل توابع پایه‌ای جبر خطی، تبدیل فوریه، تولید پیشرفته اعداد تصادفی و ابزارهایی جهت یکپارچه‌سازی با دیگر زبان‌های سطح پایین مانند C++ ، C و فورترن (Fortran) است.

SciPy سرنامی برای Scientific Python است. SciPy براساس NumPy ساخته شده و یکی از پرکاربردترین کتابخانه‌ها برای انواع گسترده‌ای از ماژول‌های سطح بالای علمی و مهندسی مانند تبدیل فوریه گسسته (discrete Fourier transform)، جبر خطی، بهینه‌سازی و «ماتریس‌های خلوت یا اسپارس» (Sparse Matrix) محسوب می‌شود.

Matplotlib برای ترسیم انواع گسترده‌ای از نمودارها، از هیستوگرام و نمودارهای خطی گرفته تا نمودارهای حرارتی قابل استفاده است. می‌توان از ویژگی Pylab در ipython notebook (به صورت ipython notebook –pylab = inline) به منظور بهره‌گیری از ویژگی‌ رسم نمودار به صورت خطی استفاده کرد. اگر ویژگی inline توسط کاربر نادیده گرفته شود، pylab محیط ipython را به محیطی بسیار شبیه به «متلب» (Matlab) مبدل می‌کند.

Pandas برای عملیات روی داده‌های ساختار یافته و دستکاری آن‌ها مورد استفاده قرار می‌گیرد. این کتابخانه به طور گسترده‌ای برای «data munging» (این عبارت یک تعریف استاندارد برای انجام تغییرات غیر قابل بازگشت در داده‌ها است. به نظر می‌رسد عبارت mung سرنام برگرفته شده از Mash Until No Good باشد. در واقع، عبارت data munging اغلب به فرآیند دریافت داده‌های خام و تبدیل و نگاشت آن‌ها به دیگر فرمت‌ها به منظور آماده‌سازی مجموعه داده جهت انجام تحلیل‌های تخصصی، اشاره دارد و از آماده‌سازی داده‌ها به عنوان مقدمه‌ای جهت تحلیل‌ها استفاده می‌شود. Pandas در سال‌های اخیر به پایتون اضافه و منجر به افزایش استفاده از آن در جامعه دانشمندان داده شده است.

Scikit Learn کتابخانه‌ای برای یادگیری ماشین است. این کتابخانه بر اساس SciPy، NumPy و matplotlib ساخته شده و شامل ابزارهای کارآمدی برای یادگیری ماشین و مدل‌سازی آماری شامل «دسته‌بندی» (classification)، «رگرسیون» (regression)، «خوشه‌بندی» (clustering) و «کاهش ابعاد» (dimensionality reduction) است.

Statsmodels برای مدل‌سازی آماری مورد استفاده قرار می‌گیرد. این کتابخانه یک ماژول از پایتون است که به کاربران امکان اکتشاف در داده‌ها، تخمین مدل‌های آماری و انجام آزمون‌های آماری را می‌دهد. Statsmodels یک لیست گسترده از «آمار توصیفی» (descriptive statistics)، «آزمون‌های آماری» (statistical tests)، توابع ترسیم نمودار و نتایج آماری برای انواع گوناگونی از داده‌ها و برآوردگرها است.

Seaborn یک کتابخانه پایتون برای بصری‌سازی آماری داده‌ها است. این کتابخانه برای ساخت گرافیک‌های آماری اطلاعاتی و جذاب در پایتون قابل استفاده و برمبنای matplotlib ساخته شده. هدف Seaborn آن است که بصری‌سازی را به بخش مرکزی اکتشاف و ادراک داده‌ها مبدل کند.

Bokeh برای ساخت نمودارهای تعاملی، دشبوردها و برنامه‌های داده در مرورگرهای مدرن مورد استفاده قرار می‌گیرد. این کتابخانه کاربر را قادر به تولید گرافیک‌های ظریف و مختصری به سبک D3.js می‌سازد. علاوه بر آنچه گفته شد، این کتابخانه توانایی تعامل با کارایی بالا در مجموعه داده‌های بسیار بزرگ یا جریانی را دارا است.

Blaze به منظور گسترش توانایی‌های Numpy و Pandas برای مجموعه داده‌های توزیع شده و جریانی، مورد استفاده قرار می‌گیرد. این کتابخانه قابل استفاده به منظور دسترسی داشتن به داده‌ها از طریق گروه کثیری از منایع شامل Bcolz ،MongoDB ،SQLAlchemy ،Apache Spark ،PyTables و دیگر موارد است. Blaze در کنار کتابخانه Bokeh می‌تواند به عنوان یک ابزار بسیار قدرتمند جهت ساخت آثاری بصری (گرافیک‌ها و نمودارها) و دشبوردهای موثر برای مجموعه‌های عظیم داده مورد استفاده قرار بگیرد.

Scrapy کتابخانه‌ای برای «خزیدن در وب» (web crawling) است. این کتابخانه برای کشف الگوهای خاص در داده‌ها بسیار مفید به حساب می‌آید. Scrapy توانایی آغاز به کار کردن در URL خانگی وب‌سایت و کاوش کردن در صفحه وب برای گردآوری اطلاعات را دارد.

SymPy برای «محاسبات نمادین» (Symbolic Computation) مورد استفاده قرار می‌گیرد و دارای طیف وسیعی از توانایی‌ها از ریاضیات نمادین پایه گرفته تا حساب، جبر، ریاضیات گسسته و فیزیک کوانتوم است. دیگر ویژگی کارآمد این کتابخانه، توانایی قالب‌بندی نتایج محاسبات به صورت کد «لاتک» (LaTeX) است.

Requests برای دسترسی به وب است. این کتابخانه به صورت مشابه با کتابخانه پایتون استاندارد urllib2 مورد استفاده قرار می‌گیرد، اما کد زدن با استفاد از Requests ساده‌تر است. امکان دارد کاربران با تجربه تفاوت‌های ظریفی بین این دو کتابخانه پیدا کنند، اما Requests برای افراد مبتدی راحت‌تر است.

۰ نظر موافقین ۰ مخالفین ۰

کار با کتابخانه پردازش زبان طبیعی (nltk) در پایتون

برنامه ای که کارکترهای یک کلمه را دریافت میکند و با کتابخانه nltk تمام کلمات معنا داری که توسط آن کارکترها ایجاد می شود را چاپ میکند.

'''@author python.pythonchallenge'''

user = input('enter your anagram:\n')
from itertools import permutations
spel = [''.join(data) for data in permutations(user)]
from nltk.corpus import words
for i in spel:
    if i in words.words():
        print(i)
دقت کنید اگر موقع اجرای برنامه با ارور مواجه شدید ابتدا کد زیر را اجرا کنید:

import nltk
nltk.download('words')


۰ نظر موافقین ۰ مخالفین ۰

راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده - Scikit Learn

برای دانلود راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده میتوانید از طریق لینک زیر اقدام کنید.

دانلود


۰ نظر موافقین ۰ مخالفین ۰

راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده - - Importing Data

برای دانلود راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده میتوانید از طریق لینک زیر اقدام کنید.

دانلود

۰ نظر موافقین ۰ مخالفین ۰

لیوان، پیراهن و کلاه با لوگوی پایتون

Image result for python




۰ نظر موافقین ۱ مخالفین ۰

چرا باید پایتون بلد باشیم؟

این روزها تقریبا هر شخصی که دستی در کد زدن و برنامه نوشتن داره، از زبان پایتون صحبت می‌کنه. پایتون در نوع خودش یک زبان جدید و مدرن محسوب میشه، ابزارهای زیادی داره و خب تقریبا هرجا که ۲-۳ تا برنامه نویس دور هم جمع باشن با تقریب خوبی دو سومشون از پایتون سردرمیارن.

در این مطلب، قصد دارم به سوالی که پرسیدم پاسخ بدم. «چرا باید پایتون بلد باشیم؟». امیدوارم این متن رو حوصله کنید و تا آخر بخونید، چون حاصل مشاهداتیه که در چند سال اخیر از جامعه برنامه نویسان ایرانی داشتم.

سینتکس، مهم ترین عامل

اصولا وقتی شما قرار باشه زبانی رو برای برنامه نویسی انتخاب کنید، احتمالا اولین گزینه‌ای که بررسی می‌کنید سینتکس اون زبانه. چرا؟ چون وقتی سینتکس زبان ساده باشه، مشخصا یادگیریش هم ساده تر میشه. پایتون با تقریب خوبی نزدیک ترین سینتکس رو به زبان آدمیزاد داره (نه صرفا انگلیسی، زبانی که آدمیزاد بتونه بفهمه) و همین خودش یک نکته مثبت در این زبانه. برای مثال بیاید یک قطعه کد پایتون رو ببینیم :

def factorial(n):
 if n == 0:
  return 1
 else: 
  return n * factorial(n-1)

این قطعه کد برای ما فاکتوریل یک عدد ورودی رو محاسبه می‌کنه. به همین سادگی. خیلی از درگیری هایی که در زبانهای دیگر مثل C داشتیم رو اینجا نداریم، صرفا ایده‌ای که در ذهنمون اومده رو می‌نویسیم و اگر اصولی که در این زبان وجود داره رو رعایت کرده باشیم، احتمالا در کمترین زمان ممکن اجرا میشه.

نمونه کدهای بسیار

بعنوان دانشجوی کامپیوتر دست کم ۲۰ واحد درسی داریم که مستقیما به کد زدن ما مربوط میشن. تقریبا از بعد از برنامه نویسی پیشرفته، یعنی از دروسی مثل ساختمان داده و الگوریتم دیگه کم کم اون انحصار از دست یک زبان خارج میشه (برای مثال در دانشگاه ما ++C ) و انتخاب زبان برای پروژه ها، بر عهده خود شخص دانشجو خواهد بود. در دروسی مثل طراحی الگوریتم، بیش از این که زبان پیاده سازی مهم باشه، درک الگوریتم و پیدا کردن راه های پیاده سازیشه که مهمه. عموم الگوریتم های مهمی که در این درس توضیح داده میشن هم، توسط پایتون پیاده سازی شدند و در اینترنت موجودن.

در واقع وقتی در یک زبانی نمونه کد زیادی موجود باشه، نشان از اینه که این زبان پویایی داره و زنده‌ست. پس این میتونه دلیل خوبی باشه بر یادگیری پایتون!

هوش مصنوعی و یادگیری ماشین

این روزها موضوعات مربوط به هوش مصنوعی در همه محافل کاملا نقل مجلس شدند و محاله شما ازشون نشنوید. حتی در جوامع هنری هم این بحث وارد شده و البته تا حد زیادی هم مایه نگرانی خیلی از اشخاصیه که از جایگزینی ماشین با انسان، ترس دارند.

اگر بخواهید در این زمینه فعالیتی کنید، احتمالا بعد از این که ریاضیات و پایه های علمیش رو یاد بگیرید، به شما یکی از کتابخانه های پایتون معرفی میشه جهت انجام پروژه. بهرحال، بسیاری از کتابخانه های قدرتمند مثل تنسرفلو، کراس و ... برای زبان پایتون ساخته شدند و دونستن پایتون شما رو در این مساله به شدت جلو میندازه.

وب

در بازار وب هم، با وجود ابزارهای بسیاری که موجودند، پایتون با فریم‌ورک های جنگو و فلاسک همچنان از پیشتازان ماجرا محسوب میشه. بسیاری از شرکتهای بزرگ روی جنگو یا فلاسک هستند یا حداقل بخشی از API هاشون روی این فریم‌ورکها نوشته شده. البته پایتون دونستن برای بازار وب کافی نیست و احتمالا مجبور خواهید بود از اسمشو نبر هم استفاده کنید!

سایر حوزه ها و پایتون

خب دو حوزه AI و وب معمولا جایین که پایتون خیلی خیلی بولد میشه، در حالی که پایتون در سایر حوزه ها هم حرفی برای گفتن داره معمولا. زبانی که تا این حد پویایی داره تقریبا برای هرچیزی یک راه حلی ارائه داده و برای مثال، آخرین چیزی که من کشف کردم، ابزار MyHDL بود که یک «زبان توصیف سخت افزار» بر پایه پایتونه! پس اگر در حوزه های متفاوتی کار می‌کنید هم نگران نباشید، تقریبا در این زبان ابزار همه کاری پیدا میشه، ضمن این که شما مجبور نیستید حتما به این زبان مهاجرت کنید!

حرف آخر

چیزی که دانشجو رو زنده نگه می‌داره، بخصوص دانشجوی کامپیوتر (نه حتما شخصی که در دانشگاه مشغول تحصیله) یادگیری بیش از پیشه. اگر این مطلب رو نوشتم (که هیچ‌وقت فکرش رو نمی‌کردم بنویسم!) به این خاطره که چند روز اخیر خیلی درگیر پایتونم و پروژه دوست عزیزی با هدف فارسی‌زایی هم باعث شد که بیش از پیش به اهمیت این زبان پی‌ببرم. من تخصصی روی پایتون کار نمی‌کنم و ادعایی هم در زمینه پایتون ندارم، ولی این روزها لازم می‌بینم به همه توصیه کنم که تا حدی این زبان رو یاد بگیرند. امیدوارم این مطلب برای شما مفید واقع شده باشه :).

منبع

۰ نظر موافقین ۰ مخالفین ۰