در این مطلب، ویدئو ماژول Itertools جادویی پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:14:32
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:02,850 –> 00:00:05,950
[Music]
2
00:00:08,639 –> 00:00:09,920
در این ویدیو قصد
3
00:00:09,920 –> 00:00:11,840
دارم شما را با یک ماژول عالی در
4
00:00:11,840 –> 00:00:14,240
پایتون به نام itter tools آشنا کنم، اکنون این
5
00:00:14,240 –> 00:00:16,400
ماژول واقعا جادویی است و
6
00:00:16,400 –> 00:00:17,840
دلیل آن این است که مجموعه ای از عملکردهای داخلی را ارائه می دهد
7
00:00:17,840 –> 00:00:20,160
که به طور خاص
8
00:00:20,160 –> 00:00:22,000
توابعی برای ایجاد تکرار کننده برای
9
00:00:22,000 –> 00:00:24,080
حلقه کارآمد اگر من فقط به سرعت
10
00:00:24,080 –> 00:00:25,439
در اینجا پیمایش کنم، می توانید ببینید که ما
11
00:00:25,439 –> 00:00:27,920
چیزهایی داریم مانند چرخه شمارش تکرار
12
00:00:27,920 –> 00:00:30,000
زنجیره تجمع زنجیره ای از
13
00:00:30,000 –> 00:00:32,800
فشرده سازی تکرارشونده دوتایی نقشه ستاره
14
00:00:32,800 –> 00:00:35,040
ای ترکیبات جایگزینی محصول و تعداد
15
00:00:35,040 –> 00:00:36,719
زیادی کار که احتمالاً
16
00:00:36,719 –> 00:00:39,200
خودتان از ابتدا انجام داده اید زیرا شما
17
00:00:39,200 –> 00:00:41,120
نمیدانستید که این تابع
18
00:00:41,120 –> 00:00:43,680
در یک ماژول داخلی به نام itter tools وجود دارد، بنابراین
19
00:00:43,680 –> 00:00:45,200
اجازه دهید به
20
00:00:45,200 –> 00:00:46,800
ویرایشگر کد برویم و من شما را
21
00:00:46,800 –> 00:00:48,000
از طریق برخی
22
00:00:48,000 –> 00:00:50,399
از عملکردهای مفیدتر ماژول intertools راهنمایی میکنم،
23
00:00:50,399 –> 00:00:51,680
بنابراین اولین چیزی که میتوانم انجام دهم. در اینجا
24
00:00:51,680 –> 00:00:53,440
میخواهم به شما توضیحی سریع درباره
25
00:00:53,440 –> 00:00:55,520
چیستی تکرارکننده بدهم، زیرا همه
26
00:00:55,520 –> 00:00:57,520
توابع intertools
27
00:00:57,520 –> 00:00:59,280
یک شی تکرارکننده را برمیگردانند و ما باید
28
00:00:59,280 –> 00:01:01,440
احتمالاً اکنون میدانم که چگونه کار میکند
29
00:01:01,440 –> 00:01:02,719
، اشاره میکنم که اگر
30
00:01:02,719 –> 00:01:04,959
متخصص برنامهنویسی دورههای برنامهنویسی من
31
00:01:04,959 –> 00:01:06,320
را داشته باشید، قبلاً
32
00:01:06,320 –> 00:01:08,479
تکرارکنندهها را میدانید، میتوانید
33
00:01:08,479 –> 00:01:10,720
برنامهنویسی پیشرفتهتر
34
00:01:10,720 –> 00:01:12,320
برنامهنویسی شیگرا و
35
00:01:12,320 –> 00:01:14,640
انواع ویژگیهای جالب در پایتون را درک
36
00:01:14,640 –> 00:01:15,920
کنید. شما علاقه مند هستید آن را از
37
00:01:15,920 –> 00:01:17,520
لینک موجود در توضیحات برنامه نویسی
38
00:01:17,520 –> 00:01:19,520
متخصص نقطه io بررسی کنید، به هر حال می توانید از کد تخفیف tim استفاده کنید
39
00:01:19,520 –> 00:01:22,320
40
00:01:22,320 –> 00:01:24,240
تا این را به شما نشان دهد.
41
00:01:24,240 –> 00:01:25,840
42
00:01:25,840 –> 00:01:27,680
43
00:01:27,680 –> 00:01:29,840
قبلاً این را دیدهام، اما اگر من کاری انجام دهم مانند
44
00:01:29,840 –> 00:01:31,920
r برابر است با محدوده و سپس بیایید
45
00:01:31,920 –> 00:01:34,720
با محدوده مثلاً 1 تا 10 برویم وقتی این
46
00:01:34,720 –> 00:01:36,880
را در اینجا چاپ میکنم، بیایید نگاهی بیندازیم و توجه داشته باشیم که من
47
00:01:36,880 –> 00:01:40,159
به سادگی محدوده 110 را دریافت میکنم اکنون محدوده خودش
48
00:01:40,159 –> 00:01:42,000
تکرارکننده نیست. اما اکنون به عنوان تکرارپذیر شناخته می شود
49
00:01:42,000 –> 00:01:44,799
هر چیزی که قابل تکرار باشد
50
00:01:44,799 –> 00:01:47,200
به سادگی دارای یک متد
51
00:01:47,200 –> 00:01:49,040
iter است، بنابراین iter این تابع است که می توانید آن را
52
00:01:49,040 –> 00:01:51,200
فراخوانی کنید و کاری که انجام می دهد در واقع
53
00:01:51,200 –> 00:01:53,439
فراخوانی مربوطه است. g underscore underscore
54
00:01:53,439 –> 00:01:55,600
یا که در کلاسی است
55
00:01:55,600 –> 00:01:57,600
که این تابع محدوده را نشان می دهد، بنابراین می دانم که
56
00:01:57,600 –> 00:01:59,680
این کمی پیچیده است، اما در
57
00:01:59,680 –> 00:02:01,200
محدوده این زیرخط زیرخط
58
00:02:01,200 –> 00:02:03,280
وجود دارد که هر کدام از آنها را می توانید
59
00:02:03,280 –> 00:02:05,040
فراخوانی کنید که به شما یک
60
00:02:05,040 –> 00:02:07,200
تکرار کننده برمی گرداند و تکرار کننده است.
61
00:02:07,200 –> 00:02:09,840
برای دریافت همه مقادیر
62
00:02:09,840 –> 00:02:12,720
در محدوده ایجاد شده توسط این شی، روی آن چیزی که تکرار می کنید، به
63
00:02:12,720 –> 00:02:15,520
عنوان مثال اگر iter از r را چاپ
64
00:02:15,520 –> 00:02:17,200
کنم، خواهید دید که من یک شی تکرار کننده محدوده دریافت می کنم
65
00:02:17,200 –> 00:02:20,239
اکنون این شی تکرار کننده محدوده
66
00:02:20,239 –> 00:02:22,560
چیزی است که می توانم تکرار کنید
67
00:02:22,560 –> 00:02:24,239
پس بیایید اینجا نگاهی بیندازیم فقط بگوییم
68
00:02:24,239 –> 00:02:24,959
69
00:02:24,959 –> 00:02:27,120
من برابر است و حالا بیایید
70
00:02:27,120 –> 00:02:29,280
برای مثال لیست i را چاپ
71
00:02:29,280 –> 00:02:31,040
کنیم وقتی این کار را انجام میدهم یک دو سه چهار
72
00:02:31,040 –> 00:02:32,640
پنج شش هفت هشت نه میگیرم زیرا این
73
00:02:32,640 –> 00:02:34,400
قابل تکرار است بنابراین میتوانم استفاده کنم تابع لیست
74
00:02:34,400 –> 00:02:35,920
روی آن است و تمام عناصر این تکرار کننده را به من می دهد،
75
00:02:35,920 –> 00:02:38,640
اما
76
00:02:38,640 –> 00:02:41,280
یک تکرار کننده زمانی تکرار کننده است که روش
77
00:02:41,280 –> 00:02:43,440
زیرخط زیرخط بعدی داشته باشد،
78
00:02:43,440 –> 00:02:45,599
بنابراین این روش یک
79
00:02:45,599 –> 00:02:47,680
روش خاص است که به
80
00:02:47,680 –> 00:02:50,480
مقدار بعدی در دنباله تکرارپذیر، بنابراین زمانی که
81
00:02:50,480 –> 00:02:52,879
من محدوده ای از 1 تا 10 دارم، کاری که می توانم انجام دهم این است
82
00:02:52,879 –> 00:02:55,120
که می
83
00:02:55,120 –> 00:02:57,200
توانم بعدی تکرار کننده خود را که i است چاپ کنم و اجازه دهید
84
00:02:57,200 –> 00:02:59,360
چند بار این را چاپ کنیم،
85
00:02:59,360 –> 00:03:01,920
وقتی این اخطار را انجام دادم. 1 2 و
86
00:03:01,920 –> 00:03:03,760
3 را به درستی دریافت کنید، این همه
87
00:03:03,760 –> 00:03:05,519
مقادیر دنباله من را به من می دهد و سپس برای ادامه
88
00:03:05,519 –> 00:03:07,040
بیشتر، بیایید به چیزی
89
00:03:07,040 –> 00:03:09,360
شبیه به این 4x نگاه کنیم و سپس من می
90
00:03:09,360 –> 00:03:11,200
گویم i زیرا می توانم از طریق یک
91
00:03:11,200 –> 00:03:13,440
تکرار کننده به درستی حلقه بزنم و من تکرارکننده i خود را دارم
92
00:03:13,440 –> 00:03:14,640
و وقتی شروع به
93
00:03:14,640 –> 00:03:17,280
چاپ x اینجا می کنم، بیایید نگاهی بیندازیم و
94
00:03:17,280 –> 00:03:18,879
متوجه شویم که هیچ مقدار تکراری دریافت نمی کنم،
95
00:03:18,879 –> 00:03:20,720
بنابراین من یک دو سه را از
96
00:03:20,720 –> 00:03:22,640
همه یقه ها در اینجا بالا می آورم و سپس وقتی
97
00:03:22,640 –> 00:03:24,159
به چرخش از طریق تکرار کننده ادامه می دهم
98
00:03:24,159 –> 00:03:25,760
من چهار پنج شش هفت هشت نه میگیرم،
99
00:03:25,760 –> 00:03:27,519
زیرا از زمانی که روش بعدی را
100
00:03:27,519 –> 00:03:30,000
به صورت دستی فراخوانی کردهایم، به
101
00:03:30,000 –> 00:03:32,640
مقادیر بعدی در دنباله تکرارپذیر منتقل شدهایم،
102
00:03:32,640 –> 00:03:34,000
میدانم اگر
103
00:03:34,000 –> 00:03:35,200
این اولین باری است که میبینید کمی گیج کننده است.
104
00:03:35,200 –> 00:03:37,120
اما اساساً زمانی که
105
00:03:37,120 –> 00:03:39,200
یک تکرارکننده یا چیزی تکرارپذیر دارید
106
00:03:39,200 –> 00:03:41,599
متأسفانه میتوانید این تابع iter را روی
107
00:03:41,599 –> 00:03:44,159
آن که به شما برمیگرداند یک تکرارکننده و
108
00:03:44,159 –> 00:03:46,159
سپس تکرارکنندهای که میتوانید این
109
00:03:46,159 –> 00:03:48,080
تابع بعدی را روی آن فراخوانی کنید و
110
00:03:48,080 –> 00:03:50,560
مقدار بعدی را در دنباله تکرارکننده به شما میدهد
111
00:03:50,560 –> 00:03:52,239
که میدانید زمانی که یک استثنای خاص تکرار را به پایان رساندهاید
112
00:03:52,239 –> 00:03:54,239
. مطرح شده این
113
00:03:54,239 –> 00:03:56,640
استثنا به عنوان توقف تکرار شناخته می شود و
114
00:03:56,640 –> 00:03:58,879
برای اینکه به شما نشان دهیم که اجازه دهید بعداً چند
115
00:03:58,879 –> 00:04:01,599
بار چاپ کنیم، بنابراین ما فقط 9
116
00:04:01,599 –> 00:04:03,519
مقدار در دنباله خود در اینجا داریم، بنابراین وقتی من
117
00:04:03,519 –> 00:04:06,720
بعدی از i را بیش از نه بار چاپ
118
00:04:06,720 –> 00:04:08,159
می کنم، در اینجا خواهید دید که ما یک استثنای توقف تکرار دریافت کنید
119
00:04:08,159 –> 00:04:10,400
و این به ما میگوید
120
00:04:10,400 –> 00:04:12,640
که هیچ مقدار دیگری در تکرارکننده ما وجود ندارد
121
00:04:12,640 –> 00:04:14,640
که باید برگردانده شود، بنابراین یک
122
00:04:14,640 –> 00:04:16,959
نمای کلی در سطح بالایی از تکرارکنندهها و اشیاء تکرارپذیر بود،
123
00:04:16,959 –> 00:04:19,279
اما ممکن است برای شما جالب باشد
124
00:04:19,279 –> 00:04:21,120
که بدانید وقتی یک حلقه for مانند
125
00:04:21,120 –> 00:04:22,560
این داریم و ما در حال حلقه زدن از طریق یک
126
00:04:22,560 –> 00:04:24,880
شی تکرار شونده چیزی که در واقع به طور ضمنی اتفاق می افتد
127
00:04:24,880 –> 00:04:26,800
این است که شما
128
00:04:26,800 –> 00:04:30,479
تابع یا متد iter را در این
129
00:04:30,479 –> 00:04:32,240
شیء تکرارپذیر که یک
130
00:04:32,240 –> 00:04:34,160
تکرار کننده برمی گرداند فراخوانی می کنید و سپس حلقه for
131
00:04:34,160 –> 00:04:36,560
ادامه می یابد. به صورت سالی متد بعدی را در
132
00:04:36,560 –> 00:04:39,199
این تکرار کننده فراخوانی کنید تا در نهایت
133
00:04:39,199 –> 00:04:41,440
استثنای توقف تکرار افزایش یابد، بنابراین هنگامی
134
00:04:41,440 –> 00:04:43,120
که آن استثنا بالا میرود، حلقه for
135
00:04:43,120 –> 00:04:44,800
متوجه میشود که هیچ شی دیگری برای حلقه
136
00:04:44,800 –> 00:04:47,199
زدن وجود ندارد و میتواند تکرار
137
00:04:47,199 –> 00:04:48,720
و مقداری را که میخواهید به آن نگاه
138
00:04:48,720 –> 00:04:51,120
کنید متوقف کند. من در اینجا برای متغیر تکرار کننده
139
00:04:51,120 –> 00:04:53,199
ما برابر است با هر آنچه که
140
00:04:53,199 –> 00:04:55,919
روش بعدی در هر مرحله
141
00:04:55,919 –> 00:04:57,600
در تکرار کننده برگردانده می شود، امیدوارم
142
00:04:57,600 –> 00:04:58,880
کمی منطقی باشد، اما باز هم
143
00:04:58,880 –> 00:05:01,600
تابع بعدی داریم که تابع داخلی داریم
144
00:05:01,600 –> 00:05:03,440
و اینها واقعاً فقط
145
00:05:03,440 –> 00:05:07,120
نقشه برداری هستند. به نقطه زیر خط زیر خط
146
00:05:07,120 –> 00:05:09,440
بعدی مانند این
147
00:05:09,440 –> 00:05:11,440
و به
148
00:05:11,440 –> 00:05:12,560
نقطه و سپس این روش
149
00:05:12,560 –> 00:05:14,960
زیرخط زیرخط زیرخط زیرخط
150
00:05:14,960 –> 00:05:17,039
زیرخط خواهد بود، بنابراین هر چیزی که
151
00:05:17,039 –> 00:05:18,960
قابل تکرار باشد، این روش iter را دارد و
152
00:05:18,960 –> 00:05:20,880
هر چیزی که تکرارکننده است، این
153
00:05:20,880 –> 00:05:22,639
روش بعدی را دارد و زمانی که از روش بعدی استفاده میکنید.
154
00:05:22,639 –> 00:05:24,320
تابع و تابع iter که شما
155
00:05:24,320 –> 00:05:26,639
فقط این متدها را روی آن اشیاء فراخوانی میکنید
156
00:05:26,639 –> 00:05:28,400
کاملاً درست است، امیدوارم که اکنون واضح است،
157
00:05:28,400 –> 00:05:29,840
اجازه دهید نگاهی به
158
00:05:29,840 –> 00:05:32,080
مدول itertools بیندازیم. بنابراین اولین نوع
159
00:05:32,080 –> 00:05:33,520
توابعی که از ماژول ابزار ویرایشگر به شما نشان می دهم
160
00:05:33,520 –> 00:05:35,199
به عنوان
161
00:05:35,199 –> 00:05:37,199
تکرار کننده های بی نهایت شناخته می شوند و معنی
162
00:05:37,199 –> 00:05:38,880
آن این است که آنها می توانند یک دنباله بی نهایت
163
00:05:38,880 –> 00:05:40,720
را برگردانند و در واقع این کار را با
164
00:05:40,720 –> 00:05:42,560
استفاده از چیزی به نام generator
165
00:05:42,560 –> 00:05:44,479
syntax i انجام می دهند. در این ویدیو دیگر توضیح نمی دهم که یک
166
00:05:44,479 –> 00:05:46,000
ژنراتور چیست، شما
167
00:05:46,000 –> 00:05:47,280
می توانید آن را از چیزی شبیه به
168
00:05:47,280 –> 00:05:49,280
متخصص برنامه نویسی یاد بگیرید، اما در حال حاضر اجازه دهید
169
00:05:49,280 –> 00:05:51,199
به اولین تابع که تعداد است نگاهی بیندازیم،
170
00:05:51,199 –> 00:05:53,759
بنابراین این یک تکرار کننده بی نهایت است
171
00:05:53,759 –> 00:05:55,440
و نحوه کار این شما هستید
172
00:05:55,440 –> 00:05:58,160
اگر
173
00:05:58,160 –> 00:06:00,000
یک مرحله را پاس نکنید، یک مقدار شروع و یک مرحله اختیاری را پاس کنید، این به طور پیش فرض
174
00:06:00,000 –> 00:06:02,000
یک خواهد بود و دقیقاً همان کاری را انجام می دهد که می
175
00:06:02,000 –> 00:06:04,000
گوید، به سادگی یک دنباله را شمارش می کند
176
00:06:04,000 –> 00:06:05,919
که از مقداری شروع می شود و
177
00:06:05,919 –> 00:06:08,319
هر بار یک پله بالا می رود. اگر از
178
00:06:08,319 –> 00:06:09,919
10 شروع کنم، یعنی همان چیزی که برای شروع اینجا پاس می
179
00:06:09,919 –> 00:06:12,080
کنم و سپس یک گام
180
00:06:12,080 –> 00:06:14,000
از 5 را دارم،
181
00:06:14,000 –> 00:06:15,919
تا زمانی که تصمیم بگیریم دیگر نمی خواهیم
182
00:06:15,919 –> 00:06:18,319
روی این تکرار کننده تکرار کنیم، گام پنج را می گذرانیم.
183
00:06:18,319 –> 00:06:19,840
کد در اینجا می توانید ببینید که w
184
00:06:19,840 –> 00:06:21,600
دنباله ای را دریافت می کنیم که در آن از 10 شروع می
185
00:06:21,600 –> 00:06:23,440
کنیم و پنج تا بالا می رود و من به تازگی آن را ساخته ام،
186
00:06:23,440 –> 00:06:25,840
بنابراین اگر این استراحت را نداشتم، به صورت دستی در اینجا در صد متوقف می شویم،
187
00:06:25,840 –> 00:06:27,759
آنگاه این
188
00:06:27,759 –> 00:06:29,280
بی نهایت اتفاق می افتد
189
00:06:29,280 –> 00:06:30,880
زیرا دوباره این یک
190
00:06:30,880 –> 00:06:33,440
دنباله بی نهایت است. جالب است که
191
00:06:33,440 –> 00:06:35,360
تابع شمارش است حالا بیایید به
192
00:06:35,360 –> 00:06:37,199
تابع بعدی برویم تابع بعدی که
193
00:06:37,199 –> 00:06:39,440
برای شما دارم نیز یک تکرار کننده بی نهایت است و
194
00:06:39,440 –> 00:06:41,600
این به عنوان تکرار در حال حاضر شناخته می شود این
195
00:06:41,600 –> 00:06:42,880
کاملاً ساده است اما این
196
00:06:42,880 –> 00:06:45,120
عنصری را در بر می گیرد که این عنصر می
197
00:06:45,120 –> 00:06:46,800
تواند یک لیست باشد، می تواند یک رشته باشد، می تواند
198
00:06:46,800 –> 00:06:48,479
واقعاً هر چیزی باشد که شما می خواهید و سپس
199
00:06:48,479 –> 00:06:50,240
حداکثر تعداد دفعاتی که می خواهید
200
00:06:50,240 –> 00:06:52,479
این کار را تکرار کنید، اختیاری است اگر
201
00:06:52,479 –> 00:06:54,000
این را پاس نکنید، به طور نامحدود تکرار می
202
00:06:54,000 –> 00:06:56,560
شود، بنابراین برای اینجا اگر دارم تکرار شود.
203
00:06:56,560 –> 00:06:58,479
تکرار کنید و من سلام را تکرار می کنم و
204
00:06:58,479 –> 00:07:01,039
حداکثر 10 بار می گویم سپس می توانم از
205
00:07:01,039 –> 00:07:02,800
طریق تکرار کننده تکرار کننده حلقه بزنم، این همان
206
00:07:02,800 –> 00:07:04,080
چیزی است که
207
00:07:04,080 –> 00:07:06,160
وقتی تابع تکرار
208
00:07:06,160 –> 00:07:08,560
را تا 10 بار فراخوانی کنید و مقدار را چاپ کنید،
209
00:07:08,560 –> 00:07:10,080
اگر این کار را انجام دهم، در اینجا برگردانده می شود. شما فقط خواهید دید که ما
210
00:07:10,080 –> 00:07:12,720
دریافت 10 hellos که روی صفحه نمایش داده می شود،
211
00:07:12,720 –> 00:07:14,160
بنابراین اگر می خواهید
212
00:07:14,160 –> 00:07:16,3