Skip to content

Commit 059b64a

Browse files
author
Saeid Darvish
committed
edited l08 (part 1 & 2)
1 parent 35d1fbc commit 059b64a

17 files changed

+76
-51
lines changed
Loading

source/_static/sitemap-index.xml

+10
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,16 @@
9494
<lastmod>2021-03-17T17:10:25+00:00</lastmod>
9595
<priority>0.80</priority>
9696
</url>
97+
<url>
98+
<loc>https://python.coderz.ir/lessons/l08-list-and-tuple-in-python.html</loc>
99+
<lastmod>2023-03-17T17:10:25+00:00</lastmod>
100+
<priority>0.80</priority>
101+
</url>
102+
<url>
103+
<loc>https://python.coderz.ir/lessons/l08-set-and-dict-in-python.html</loc>
104+
<lastmod>2023-03-17T17:10:25+00:00</lastmod>
105+
<priority>0.80</priority>
106+
</url>
97107
<url>
98108
<loc>https://python.coderz.ir/lessons/l09.html</loc>
99109
<lastmod>2021-03-17T17:10:25+00:00</lastmod>

source/lessons/l07-numeric-types-in-python.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@
519519
f = Decimal("NaN")
520520
521521
* از آنجا که نوع ممیز شناور دقیق نیست؛ این اعداد را حتما به صورت رشته به ``Decimal`` ارسال نمایید (سطر دوم).
522-
* اعداد را می‌توان به صورت یک شی تاپل (Tuple) - ساختاری مشابه: (... ,Ο, Ο, Ο) - ارسال کرد (سطر چهارم). شیوه نماد علمی را به یاد بیاورید؛ تاپل مورد نظر باید ساختاری مشابه الگو ``(sign, digits, exponent)`` داشته باشد که در آن sign مثبت بودن (توسط عدد صفر) یا منفی بودن (توسط عدد یک) را مشخص می‌کند، digits خود تاپلی است که رقم‌های دخیل را بیان می‌کند و exponent نیز بیانگر همان توان است.
522+
* اعداد را می‌توان به صورت یک شی توپِل (Tuple) - ساختاری مشابه: (... ,Ο, Ο, Ο) - ارسال کرد (سطر چهارم). شیوه نماد علمی را به یاد بیاورید؛ توپِل مورد نظر باید ساختاری مشابه الگو ``(sign, digits, exponent)`` داشته باشد که در آن sign مثبت بودن (توسط عدد صفر) یا منفی بودن (توسط عدد یک) را مشخص می‌کند، digits خود توپِلی است که رقم‌های دخیل را بیان می‌کند و exponent نیز بیانگر همان توان است.
523523

524524
میزان دقت (Precision) و عمل گرد کردن (Rounding) اعداد از نوع دسیمال با استفاده از یک شی ``Context`` قابل کنترل است؛ این شی یک سری اطلاعات پیکربندی را در اختیار اشیا دسیمال قرار می‌دهد که برای دسترسی به آن باید از تابع ``()getcontext`` [`اسناد پایتون <http://docs.python.org/3/library/decimal.html#decimal.getcontext>`__] درون ماژول ``decimal`` استفاده کرد. تابع ``()getcontext`` شی ``Context`` اشیا دسیمال جاری برنامه را برمی‌گرداند::
525525

source/lessons/l07-string-in-python.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119
رشته به عنوان دنباله‌ (Sequence)
120120
----------------------------------
121121

122-
برخی از انواع شی پایتون به مانند رشته، تاپل (tuple)، لیست (list) و... با عنوان **دنباله** (Sequence) نیز شناخته می‌شوند. دنباله ویژگی‌هایی دارد که در اینجا به کمک نوع رشته بررسی خواهیم کرد. رشته در واقع یک **دنباله** از کاراکترهاست در نتیجه می‌توان هر یک از اعضای این دنباله را با استفاده از اندیس (Index) موقعیت آن، دستیابی نمود؛ اندیس اعضا از سمت چپ با عدد صفر شروع و به سمت راست یک واحد یک واحد افزایش می‌یابد. به عنوان نمونه برای شی ``'Python Strings'`` می‌توانیم شمای اندیس‌گذاری را به صورت پایین در نظر بگیریم::
122+
برخی از انواع شی پایتون به مانند رشته، توپِل (tuple)، لیست (list) و... با عنوان **دنباله** (Sequence) نیز شناخته می‌شوند. دنباله ویژگی‌هایی دارد که در اینجا به کمک نوع رشته بررسی خواهیم کرد. رشته در واقع یک **دنباله** از کاراکترهاست در نتیجه می‌توان هر یک از اعضای این دنباله را با استفاده از اندیس (Index) موقعیت آن، دستیابی نمود؛ اندیس اعضا از سمت چپ با عدد صفر شروع و به سمت راست یک واحد یک واحد افزایش می‌یابد. به عنوان نمونه برای شی ``'Python Strings'`` می‌توانیم شمای اندیس‌گذاری را به صورت پایین در نظر بگیریم::
123123

124124
P y t h o n S t r i n g s
125125
- - - - - - - - - - - - - -

source/lessons/l08-list-and-tuple-in-python.rst

+22-18
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@
1010
درس ۰۸: ساختمان‌های داده در پایتون: list و tuple
1111
====================================================================================
1212

13-
.. figure:: /_static/pages/08-python-built-in-data-types-2.jpg
13+
.. figure:: /_static/pages/08-python-built-in-data-types-3.jpg
1414
:align: center
1515
:alt: درس ۰۸: ساختمان‌های داده در پایتون: tuple و list
1616
:class: page-image
1717

18-
Photo by `Natalia Y <https://unsplash.com/photos/Oxl_KBNqxGA>`__
18+
Photo by `Maria Orlova <https://unsplash.com/photos/aO76xjr6xow>`__
1919

2020

21-
از درس هفتم با انواع داده از پیش آماده در پایتون آشنا شده‌ایم و در این درس به ساختمان‌های داده در پایتون خواهیم پرداخت. ساختمان‌های داده یا Data Structures به اشیایی گفته می‌شود که برای نگهداری از یک مجموعه داده طراحی شده‌اند و هر یک دارای ویژگی منحصربه‌فرد خود است. برای مثال قابل تغییر بودن، امکان حفظ ترتیب اعضا، امکان نگهداری داده‌های تکراری یا تنها اجبار به نگهداری داده‌های یکتا که هر یک مناسب وضعیت خاصی در برنامه‌نویسی هستند. این درس به بررسی چهار ساختمان داده متداول در پایتون خواهد پرداخت: لیست (list)، تاپِل (tuple)، مجموعه (set) و دیکشنری (dict)
21+
از درس هفتم با انواع داده پایه در پایتون آشنا شده‌ایم و در این درس به بررسی انواع داده دیگری خواهیم پرداخت که در زبان‌های برنامه‌نویسی عموما با عنوان ساختمان‌های داده بیان می‌شوند. ساختمان‌های داده یا Data Structures به اشیایی گفته می‌شود که برای نگهداری از یک مجموعه داده طراحی شده‌اند و هر یک دارای ویژگی منحصربه‌فرد خود است. برای مثال قابل تغییر بودن، امکان حفظ ترتیب اعضا، امکان نگهداری داده‌های تکراری یا تنها اجبار به نگهداری داده‌های یکتا که هر یک مناسب وضعیت خاصی در برنامه‌نویسی هستند. این درس به بررسی چهار ساختمان داده متداول در پایتون خواهد پرداخت: لیست (list)، توپِل (tuple)، مجموعه (set) و دیکشنری (dict)
2222

2323

24-
به منظور جلوگیری از طولانی شدن متن درس و همینطور سادگی در مطالعه، محتوا این درس در قالب دو بخش ارایه می‌شود که بخش نخست تنها به شرح لیست (list) و تاپِل (tuple) خواهد پرداخت.
24+
به منظور جلوگیری از طولانی شدن متن درس و همینطور سادگی در مطالعه، محتوا این درس در قالب دو بخش ارایه می‌شود که بخش نخست تنها به شرح لیست (list) و توپِل (tuple) خواهد پرداخت.
2525

2626

2727

@@ -40,7 +40,7 @@
4040
لیست
4141
------
4242

43-
نوع «**لیست**» (List) انعطاف‌ پذیرترین نوع آماده در پایتون می‌باشد. این نوع همانند رشته یک «**دنباله**» (Sequence) بوده ولی برخلاف آن یک نوع «**تغییر پذیر**» (Mutable) است. شی لیست با استفاده از کروشه ``[ ]`` ایجاد می‌گردد و ترتیب اعضا را حفظ و می‌تواند عضوهایی - **از هر نوع** - داشته باشد که توسط کاما ``,`` از یکدیگر جدا می‌شوند؛ نوع لیست در واقع محلی برای نگهداری اشیا گوناگون و تغییرپذیر است::
43+
نوع «**لیست**» (List) یک نوع بسیار انعطاف‌پذیر در پایتون می‌باشد. این نوع همانند رشته یک «**دنباله**» (Sequence) بوده ولی برخلاف آن یک نوع «**تغییر پذیر**» (Mutable) است. شی لیست با استفاده از کروشه ``[ ]`` ایجاد می‌گردد و ترتیب اعضا را حفظ و می‌تواند عضوهایی - **از هر نوع** - داشته باشد که توسط کاما ``,`` از یکدیگر جدا می‌شوند؛ نوع لیست در واقع محلی برای نگهداری اشیا گوناگون و تغییرپذیر است::
4444

4545
>>> L = [1, 2, 3]
4646
>>> type(L)
@@ -201,7 +201,11 @@
201201
File "<stdin>", line 1, in <module>
202202
NameError: name 'a' is not defined
203203

204-
.. rubric:: انتساب چندگانه
204+
205+
.. _python-unpacking:
206+
207+
انتساب چندگانه
208+
~~~~~~~~~~~~~~~~~~~~
205209

206210
می‌توان یک شی لیست - یا در کل یک شی دنباله - را به تعدادی نام انتساب داد و متغیرهای جداگانه‌ای ایجاد نمود؛ این عمل **Unpacking** خوانده می‌شود. در این شرایط مفسر پایتون هر عضو دنباله را با حفظ ترتیب به یکی از نام‌ها انتساب می‌دهد که در حالت عادی می‌بایست تعداد نام‌ها با عضوهای دنباله برابر باشد::
207211

@@ -747,10 +751,10 @@
747751

748752

749753

750-
تاپل
754+
توپِل
751755
------
752756

753-
نوع «**تاپِل**» (Tuple) همانند نوع ``list`` است ولی با این تفاوت که تغییر پذیر **نیست** و عضوهای آن درون پرانتز ``()`` قرار داده می‌شوند::
757+
نوع «**توپِل**» (Tuple) همانند نوع ``list`` است تنها با این تفاوت که تغییرپذیر **نیست** (بنابراین به نسبت مقدار حافظه کمتری مصرف می‌کند) و عضوهای آن درون پرانتز ``()`` قرار داده می‌شوند::
754758

755759
>>> t = (1, 2, 3)
756760
>>> type(t)
@@ -771,7 +775,7 @@
771775
>>> t
772776
()
773777

774-
در انتهای شی تاپل تک عضوی می‌بایست یک نماد کاما قرار داد؛ به مانند: ``(,1)``. از آنجا که از پرانتز در عبارت‌ها نیز استفاده می‌شود؛ با این کار مفسر پایتون یک شی تاپل را از عبارت تشخیص می دهد::
778+
در انتهای شی توپِل تک عضوی می‌بایست یک نماد کاما قرار داد؛ به مانند: ``(,1)``. از آنجا که از پرانتز در عبارت‌ها نیز استفاده می‌شود؛ با این کار مفسر پایتون یک شی توپِل را از عبارت تشخیص می دهد::
775779

776780

777781
>>> (4 + 1)
@@ -792,7 +796,7 @@
792796
<class 'tuple'>
793797

794798

795-
برای ایجاد شی تاپل حتی می‌توان از گذاردن پرانتز صرف نظر کرد و تنها اشیا (یا عبارت‌ها) را با کاما از یکدیگر جدا نمود::
799+
برای ایجاد شی توپِل حتی می‌توان از گذاردن پرانتز صرف نظر کرد و تنها اشیا (یا عبارت‌ها) را با کاما از یکدیگر جدا نمود::
796800

797801
>>> 5,
798802
(5,)
@@ -816,10 +820,10 @@
816820

817821

818822
.. note::
819-
نوع تاپل به دلیل تغییر ناپذیر بودن، نسبت به نوع لیست در مصرف حافظه بهینه‌تر می‌باشد؛ بنابراین بهتر است در مواقعی که نیاز به تغییر خاصی در داده‌ها نیست از این نوع استفاده شود. همچنین در مواقعی که نباید داده‌ها تغییر کنند، استفاده از شی تاپل به جای لیست می‌تواند از آن‌ها در برابر تغییر محافظت کند.
823+
نوع توپِل به دلیل تغییر ناپذیر بودن، نسبت به نوع لیست در مصرف حافظه بهینه‌تر می‌باشد؛ بنابراین بهتر است در مواقعی که نیاز به تغییر خاصی در داده‌ها نیست از این نوع استفاده شود. همچنین در مواقعی که نباید داده‌ها تغییر کنند، استفاده از شی توپِل به جای لیست می‌تواند از آن‌ها در برابر تغییر محافظت کند.
820824

821825

822-
به دلیل شباهت‌های بسیار شی تاپل به شی لیست از ارایه توضیحات تکراری اجتناب کرده و تنها به ذکر چند مثال در ارتباط با نوع تاپل می‌پردازیم::
826+
به دلیل شباهت‌های بسیار شی توپِل به شی لیست از ارایه توضیحات تکراری اجتناب کرده و تنها به ذکر چند مثال در ارتباط با نوع توپِل می‌پردازیم::
823827

824828
>>> ('a', 'b', 'c') + (1 , 2, 3)
825829
('a', 'b', 'c', 1, 2, 3)
@@ -890,7 +894,7 @@
890894
>>> len(t[2])
891895
3
892896

893-
به دلیل ساختار ارجاعی بین اشیا در پایتون که توسط تصاویر بخش لیست نیز نمایش داده شد؛ اشیا تغییر پذیر درون شی تاپل، ویژگی‌های خود را داشته و همچنان تغییر پذیر خواهند بود::
897+
به دلیل ساختار ارجاعی بین اشیا در پایتون که توسط تصاویر بخش لیست نیز نمایش داده شد؛ اشیا تغییر پذیر درون شی توپِل، ویژگی‌های خود را داشته و همچنان تغییر پذیر خواهند بود::
894898

895899
>>> t = ('p', 'y', [1, 2, 3], 5)
896900

@@ -952,7 +956,7 @@
952956
*حتما متوجه شده‌اید که عضوهای دنباله تنها با نوع لیست به نام نشانه‌گذاری شده انتساب داده می‌شود.*
953957

954958

955-
در هنگام انتساب متغیر تاپل به موضوع کپی نشدن اشیا تغییر پذیر توجه داشته باشید و در صورت نیاز از ماژول ``copy`` استفاده نمایید::
959+
در هنگام انتساب متغیر توپِل به موضوع کپی نشدن اشیا تغییر پذیر توجه داشته باشید و در صورت نیاز از ماژول ``copy`` استفاده نمایید::
956960

957961
>>> t1 = ('p', 'y', [1, 2, 3], 5)
958962

@@ -981,7 +985,7 @@
981985

982986

983987

984-
همانند شی لیست؛ شی تاپل نیز به دو متد ``()index`` و ``()count`` دسترسی دارد - این موضوع با استفاده از تابع ``()dir`` قابل بررسی است::
988+
همانند شی لیست؛ شی توپِل نیز به دو متد ``()index`` و ``()count`` دسترسی دارد - این موضوع با استفاده از تابع ``()dir`` قابل بررسی است::
985989

986990
>>> t = ('s', 'b', 'c', 'a', 's', 'b')
987991

@@ -1024,7 +1028,7 @@
10241028
(END)
10251029

10261030

1027-
هر زمان که نیاز به اِعمال تغییر در شی تاپل باشد؛ می‌توان شی مورد نظر را به صورت موقت به یک شی لیست تبدیل کرد. در این حالت می‌توان از ویژگی و متدهای شی لیست بهره برد و تغییرات دلخواه را اعمال کرد و در نهایت با یک تبدیل نوع دیگر دوباره به شی تاپل بازگشت. برای این منظور می‌توان با استفاده از کلاس ``()list`` یک دنباله - در اینجا یک شی تاپل - را به شی لیست تبدیل کرد و در طرف دیگر توسط کلاس ``()tuple`` نیز یک دنباله - در اینجا یک شی لیست - را به شی تاپل تبدیل نمود::
1031+
هر زمان که نیاز به اِعمال تغییر در شی توپِل باشد؛ می‌توان شی مورد نظر را به صورت موقت به یک شی لیست تبدیل کرد. در این حالت می‌توان از ویژگی و متدهای شی لیست بهره برد و تغییرات دلخواه را اعمال کرد و در نهایت با یک تبدیل نوع دیگر دوباره به شی توپِل بازگشت. برای این منظور می‌توان با استفاده از کلاس ``()list`` یک دنباله - در اینجا یک شی توپِل - را به شی لیست تبدیل کرد و در طرف دیگر توسط کلاس ``()tuple`` نیز یک دنباله - در اینجا یک شی لیست - را به شی توپِل تبدیل نمود::
10281032

10291033
>>> t = (1, 2, 3)
10301034
>>> type(t)
@@ -1045,15 +1049,15 @@
10451049
('python', 1, 2, 3)
10461050

10471051

1048-
البته در مواقعی که می‌خواهید عضوهای درون یک شی تاپل را مرتب (Sort) کنید، نیازی به تبدیل نوع لیست نمی‌باشد و می‌توانید از تابع ``()sorted`` استفاده نمایید؛ این تابع مطابق آنچه که پیش از این معرفی شد یک شی تاپل را می‌گیرد و یک شی لیست با همان عضوها اما مرتب شده را برمی‌گرداند::
1052+
البته در مواقعی که می‌خواهید عضوهای درون یک شی توپِل را مرتب (Sort) کنید، نیازی به تبدیل نوع لیست نمی‌باشد و می‌توانید از تابع ``()sorted`` استفاده نمایید؛ این تابع مطابق آنچه که پیش از این معرفی شد یک شی توپِل را می‌گیرد و یک شی لیست با همان عضوها اما مرتب شده را برمی‌گرداند::
10491053

10501054
>>> t = ('a', 'D', 'c', 'B', 'e', 'f', 'G', 'h')
10511055

10521056
>>> sorted(t, key=str.lower, reverse=True)
10531057
['h', 'G', 'f', 'e', 'D', 'c', 'B', 'a']
10541058

10551059

1056-
کلاس ``()tuple`` بدون آرگومان یک شی تاپل خالی را ایجاد می‌کند::
1060+
کلاس ``()tuple`` بدون آرگومان یک شی توپِل خالی را ایجاد می‌کند::
10571061

10581062
>>> t = tuple()
10591063
>>> t

0 commit comments

Comments
 (0)