آموزش پایتون رایگان

سلام دوستان …در قسمت قبل آموزش پایتون مفاهیم زیر را یاد دادیم

برای شما
  • آموزش ساختار های داده
  • استفاده از لیست ها به عنوان صف در پایتون
  • آموزش عبارت del در زبان برنامه نویسی پایتون

با ادامه آموزش پایتون همراه ما باشید.

آموزش دنباله ها و چندتایی ها (tuples) در زبان برنامه نویسی پایتون

دیدیم که لیست ها و رشته ها خصیصه های مشترک بسیاری داشتند، مانند عملیات اندیس گذاری و بخش بندی (slicing) . آنها دو مثال از انواع داده دنباله هستند

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

1 >>> t = 12345, 54321, 'hello!'
1    >>> t[0]
1    12345
1    >>> t
1    (12345, 54321, 'hello!')
1    >>> # Tuples may be nested:
1    ... u = t, (1, 2, 3, 4, 5)
1    >>> u
1    ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
1    >>> # Tuples are immutable:
1    ... t[0] = 88888
1    Traceback (most recent call last):
1      File "<stdin>", line 1, in <module>
1    TypeError: 'tuple' object does not support item assignment
1    >>> # but they can contain mutable objects:
1    ... v = ([1, 2, 3], [3, 2, 1])
1    >>> v
1    ([1, 2, 3], [3, 2, 1])
1</module></stdin>

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

اگرچه ممکن است چندتایی ها شبیه لیست ها به نظر برسند، اما اغلب در موقعیت های مختلف و برای اهداف متفاوتی از چندتایی ها استفاده می شود. چندتایی ها غیر قابل تغییر هستند، و معمولا در بر دارنده دنباله ای از عناصر نا همگن هستند که به وسیله باز کردن (unpacking- در ادامه این بخش می بینیم) یا اندیس گذاری (یا حتی توسط ویژگی در صورت namedtuples) قابل دسترسی هستند.

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

1>>> empty = ()
1>>> singleton = 'hello',    # <-- note trailing comma
1>>> len(empty)
10
1>>> len(singleton)
11
1>>> singleton
1('hello',)

عبارت t = 12345, 54321, ‘hello!’ یک مثال از بسته بندی چندتایی است. مقادیر 12345 ، 54321 و ‘hello!’ با هم در یک چندتایی بسته بندی شده اند. عملیات عکس آن نیز امکان پذیر است:

1>>> x, y, z = t

این باز کردن دنباله (sequence unpacking) نام دارد و برای هر دنباله در سمت راست (right-hand side) کار می کند. باز کردن دنباله نیازمند این است که به تعداد عناصر موجود در دنباله، متغیر در سمت چپ علامت مساوی باشد. توجه کنید که تخصیص های متعدد فقط ترکیبی از بسته بندی چندتایی و باز کردن دنباله است.

آموزش مجموعه ها (set) در آموزش پایتون

همچنین پایتون شامل یک نوع داده برای مجموعه ها است.

کاربردهای اصلی شامل تست عضویت و حذف ورودی های تکراری است. همچنین اشیای مجموعه از عملیات ریاضی مانند اجتماع, اشتراک, تفاضل و تفاضل متقارن پشتیبانی می کند. از پرانتز {} یا تابع set() برای ساخت مجموعه می توان استفاده کرد. نکته: برای ایجاد یک مجموعه خالی باید از set() استفاده کنید نه {}. دومی یک دیکشنری خالی می سازد، ساختار داده ای که در بخش بعدی درباره آن بحث می کنیم. در اینجا یک نمایش مختصر داریم:

1>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
1>>> print(basket)                      # show that duplicates have been removed
1{'orange', 'banana', 'pear', 'apple'}
1>>> 'orange' in basket                 # fast membership testing
1True
1>>> 'crabgrass' in basket
1False
1 
1>>> # Demonstrate set operations on unique letters from two words
1...
1>>> a = set('abracadabra')
1>>> b = set('alacazam')
1>>> a                                  # unique letters in a
1{'a', 'r', 'b', 'c', 'd'}
1>>> a - b                              # letters in a but not in b
1{'r', 'd', 'b'}
1>>> a | b                              # letters in a or b or both
1{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
1>>> a & b                              # letters in both a and b
1{'a', 'c'}
1>>> a ^ b                              # letters in a or b but not both
1{'r', 'd', 'b', 'm', 'z', 'l'}

مشابه درک مطلب لیست، درک مطلب مجموعه ها نیز پشتیبانی می شود:

1>>> a = {x for x in 'abracadabra' if x not in 'abc'}
1>>> a
1{'r', 'd'}

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

نوع داده مفید دیگری که درون پایتون ساخته شده دیکشنری است

بعضی اوقات در سایر زبان ها مانند “associative memories” و “associative arrays” نیز دیکشنری پیدا می شود. برخلاف دنباله ها که با بازه ای از اعداد اندیس گذاری می شوند، دیکشنری ها با کلیدها اندیس گذاری می شوند که این کلیدها می توانند هر نوع غیر قابل تغییری باشند. رشته ها و اعداد همیشه می توانند کلید باشند. چندتایی ها در زمانی که تنها شامل رشته ها، اعداد و چندتایی های دیگر باشند، می توانند کلید باشند.

اگر چندتایی شامل هر گونه شی قابل تغییر ، مستقیم یا غیر مستقیم باشد، نمیتواند به عنوان کلید مورد استفاده قرار گیرد. از لیست ها نمی توان به عنوان کلید استفاده کرد زیرا آنها با استفاده از تخصیص اندیس، تخصیص بخش (slice) یا با استفاده از متدهای append() و extend() می توانند تغییر کنند.

بهتر است به دیکشنری به عنوان مجموعه ای از جفت “کلید:مقدار” نگاه کنیم با این شرط که کلید ها (درون یک دیکشنری) یکتا هستند. یک جفت پرانتز {} یک دیکشنری خالی ایجاد می کند. قرار دادن لیستی از جفت کلید:مقدار که با ویرگول از هم جداشده اند درون پرانتز ها ، کلید:مقدار اولیه را به دیکشنری اضافه می کند. همچنین دیکشنری ها در خروجی به این روش نوشته می شوند.

عملیات اصلی روی یک دیکشنری، ذخیره یک مقدار با یک کلید و استخراج آن مقدار با دادن کلید است. همچنین می توان با del یک جفت کلید:مقدار را پاک کرد. اگر یک مقدار را با استفاده از یک کلیدی که در حال حاضر موجود و در حال استفاده است ذخیره کنید، مقدار قبلی مربوط به آن کلید فراموش می شود. استخراج یک مقدار توسط کلیدی که وجود ندارد خطا است.

اگر list(d) را روی یک دیکشنری اعمال کنید، یک لیست از تمامی کلیدهای موجود در دیکشنری به ترتیب درج باز می گرداند ( اگر میخواهید که مرتب شود به جای آن از sorted(d) استفاده کنید). برای بررسی اینکه آیا یک کلید در دیکشنری وجود دارد از کلمه کلیدی in استفاده کنید. در اینجا مثالی کوچک که از دیکشنری استفاده کرده است را می بینیم:

1>>> tel = {'jack': 4098, 'sape': 4139}
1>>> tel['guido'] = 4127
1>>> tel
1{'jack': 4098, 'sape': 4139, 'guido': 4127}
1>>> tel['jack']
14098
1>>> del tel['sape']
1>>> tel['irv'] = 4127
1>>> tel
1{'jack': 4098, 'guido': 4127, 'irv': 4127}
1>>> list(tel)
1['jack', 'guido', 'irv']
1>>> sorted(tel)
1['guido', 'irv', 'jack']
1>>> 'guido' in tel
1True
1>>> 'jack' not in tel
1False

سازنده dict() مستقیما از دنباله های جفت کلید:مقدار دیکشنری می سازد.

1>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
1{'sape': 4139, 'guido': 4127, 'jack': 4098}

علاوه بر آن از درک مطلب دیکشنری (dict comprehensions) برای ساخت دیکشنری ها از عبارات کلید:مقدار دلخواه می توان استفاده کرد.

1>>> {x: x**2 for x in (2, 4, 6)}
1{2: 4, 4: 16, 6: 36}

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

1>>> dict(sape=4139, guido=4127, jack=4098)
1{'sape': 4139, 'guido': 4127, 'jack': 4098}

آموزش تکنیک های حلقه در برنامه نویسی python

هنگامی که در دیکشنری ها از حلقه استفاده شود، می توان با استفاده از متد items() کلید و مقدار متناظر با آن را به طور همزمان بازیابی کرد.

1>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
1>>> for k, v in knights.items():
1...     print(k, v)
1...
1gallahad the pure
1robin the brave

هنگامی که در یک دنباله از حلقه استفاده شود، با استفاده از تابع enumerate() میتوان اندیس مکان و مقدار متناظر با آن را به صورت همزمان بازیابی کرد.

1>>> for i, v in enumerate(['tic', 'tac', 'toe']):
1...     print(i, v)
1...
10 tic
11 tac
12 toe

برای حلقه زدن روی دو یا بیشتر دنباله به صورت همزمان، ورودی ها با استفاده از تابع zip() می توانند جفت شوند.

1>>> questions = ['name', 'quest', 'favorite color']
1>>> answers = ['lancelot', 'the holy grail', 'blue']
1>>> for q, a in zip(questions, answers):
1...     print('What is your {0}?  It is {1}.'.format(q, a))
1...
1What is your name?  It is lancelot.
1What is your quest?  It is the holy grail.
1What is your favorite color?  It is blue.

برای حلقه زدن روی یک دنباله به صورت معکوس، ابتدا دنباله را در جهت رو به جلو مشخص کنید، سپس تابع reversed() را فراخوانی کنید.

1>>> for i in reversed(range(1, 10, 2)):
1...     print(i)
1...
19
17
15
13
11

برای حلقه زدن روی یک دنباله به صورت مرتب شده، از تابع sorted() استفاده کنید که یک لیست جدید مرتب شده را باز می گرداند و در دنباله اولیه تغییری ایجاد نمی کند.

1>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
1>>> for f in sorted(set(basket)):
1...     print(f)
1...
1apple
1banana
1orange
1pear

گاهی اوقات تغییر یک لیست زمانی که در حال استفاده از حلقه روی آن هستید، تحریک کننده است. هر چند اغلب ایجاد یک لیست جدید به جای آن ساده تر و امن تر است.

1>>> import math
1>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
1>>> filtered_data = []
1>>> for value in raw_data:
1...     if not math.isnan(value):
1...         filtered_data.append(value)
1...
1>>> filtered_data
1[56.2, 51.7, 55.3, 52.5, 47.8]

مباحث بیشتر درباره شرط ها در برنامه نویسی Python

شروط استفاده شده در عبارات while و if می تواند شامل هر عملگری باشد، نه فقط مقایسه. عملگرهای مقایسه ای in و not in وجود و عدم وجود یک مقدار درون یک دنباله را بررسی می کنند.

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

برای مثال a < b == c بررسی می کند که آیا a کمتر از b است و علاوه بر آن b مساوی c است. مقایسه ها ممکن است با استفاده از عملگرهای بولی (Boolean) مانند and و or ترکیب شوند، و خروجی مقایسه (یا هر عبارت بولی دیگر) با استفاده از not منفی شود. اینها نسبت به عملگرهای مقایسه ای اولویت پایین تری دارند.

نویسنده مطلب: Diamond

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

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

ثبت نام و دریافت جایزه
ممکن است شما بپسندید
نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.