در این مطلب، ویدئو برنامه نویسی تابعی در پایتون: تابع “reduce()”. با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:01,860
سلام این دن بادر است و این
2
00:00:01,860 –> 00:00:03,780
قسمت دیگری از
3
00:00:03,780 –> 00:00:05,460
سری برنامه نویسی تابعی پایتون من است که در آن ما در مورد برنامه نویسی تابعی صحبت می کنیم
4
00:00:05,460 –> 00:00:07,350
5
00:00:07,350 –> 00:00:08,970
و می توانید برخی از اصول
6
00:00:08,970 –> 00:00:10,679
اولیه برنامه نویسی تابعی در
7
00:00:10,679 –> 00:00:12,900
پایتون مانند تابع فیلتر تابع نقشه
8
00:00:12,900 –> 00:00:14,820
و در این ویدیو را یاد بگیرید. ما قصد
9
00:00:14,820 –> 00:00:16,619
داریم در مورد عملکرد کاهش یافته صحبت کنیم، بنابراین اگر
10
00:00:16,619 –> 00:00:18,630
قسمت های دیگر
11
00:00:18,630 –> 00:00:21,060
این مجموعه را ندیده اید، ممکن است بخواهید به
12
00:00:21,060 –> 00:00:23,279
عقب برگردید تا ببینید در مورد چه چیزی صحبت می کنیم،
13
00:00:23,279 –> 00:00:24,660
به خصوص توصیه می کنم
14
00:00:24,660 –> 00:00:26,730
قسمت اول را در یک قسمت تماشا کنید. مجموعهای از این سری، بنابراین
15
00:00:26,730 –> 00:00:29,279
میتوانید ساختار دادهای
16
00:00:29,279 –> 00:00:32,369
را که در این مثالها یا در این
17
00:00:32,369 –> 00:00:35,160
آموزش استفاده میکنیم و با آن
18
00:00:35,160 –> 00:00:37,760
کار میکنیم، ببینید، بنابراین با مجموعه دادهای ساده از
19
00:00:37,760 –> 00:00:39,570
دانشمندان و تاریخ تولد آنها و
20
00:00:39,570 –> 00:00:42,000
مواردی از این قبیل کار میکنیم.
21
00:00:42,000 –> 00:00:43,950
با استفاده از اصول برنامهنویسی تابعی، آن را به روشهای جالبی تغییر میدهیم،
22
00:00:43,950 –> 00:00:47,399
بنابراین در این ویدیو
23
00:00:47,399 –> 00:00:50,160
میخواهم در مورد یکی دیگر از
24
00:00:50,160 –> 00:00:53,789
اصول اولیه برنامهنویسی تابعی صحبت کنم که تابع کاهش
25
00:00:53,789 –> 00:00:56,430
است و چون من در اینجا پایتون 3
26
00:00:56,430 –> 00:00:58,620
هستم. من باید ابتدا تابع کاهش
27
00:00:58,620 –> 00:00:59,969
را از کتابخانه استاندارد وارد کنم، فکر میکنم
28
00:00:59,969 –> 00:01:02,609
در پایتون 2، شما میتوانید
29
00:01:02,609 –> 00:01:06,720
فقط به کم کردن بروید و این تابع
30
00:01:06,720 –> 00:01:08,010
یک توکار خواهد بود که در فضای نام جهانی موجود است،
31
00:01:08,010 –> 00:01:09,869
اما چون من روی
32
00:01:09,869 –> 00:01:14,670
پایتون 3 هستم، در واقع باید از
33
00:01:14,670 –> 00:01:19,500
کاهش واردات ابزارهای فانک خارج شد و سپس میتوانیم
34
00:01:19,500 –> 00:01:21,150
دوباره به رشته doc در اینجا نگاهی بیندازیم و
35
00:01:21,150 –> 00:01:24,360
بنابراین من رشته سهام را دوست دارم زیرا
36
00:01:24,360 –> 00:01:26,369
هنوز به یاد دارم که میدانید اولین باری
37
00:01:26,369 –> 00:01:28,380
بود که یاد میگرفتم چگونه برخی از این
38
00:01:28,380 –> 00:01:30,720
اولیههای کاربردی در دیگری کار میکنند.
39
00:01:30,720 –> 00:01:32,460
زبان برنامه نویسی در آن زمان و
40
00:01:32,460 –> 00:01:34,140
فقط خواندن تعریف
41
00:01:34,140 –> 00:01:35,939
تابع کاهش یافته در سال اول
42
00:01:35,939 –> 00:01:37,140
تحصیل در علوم کامپیوتر
43
00:01:37,140 –> 00:01:40,470
در مقابل نشستن در آنجا مثل اینکه نمی دانم در مورد
44
00:01:40,470 –> 00:01:41,670
چه چیزی صحبت می کنید
45
00:01:41,670 –> 00:01:44,939
و خوب امیدوارم شما هم همین احساس را
46
00:01:44,939 –> 00:01:47,119
نداشته باشید. اگر این کار را انجام می دهید نگران نباشید زیرا
47
00:01:47,119 –> 00:01:49,229
می دانید که می توانید این موارد را بفهمید
48
00:01:49,229 –> 00:01:51,240
و امیدواریم که آن آموزش
49
00:01:51,240 –> 00:01:53,100
بخشی از آن باشد، بنابراین اجازه دهید به این موضوع بپردازیم
50
00:01:53,100 –> 00:01:55,710
تا تابع کاهش یافته یک
51
00:01:55,710 –> 00:01:58,619
تابع را بگیرد و سپس دنباله ای از آن را بگیرد.
52
00:01:58,619 –> 00:02:00,990
بنابراین من معتقدم که برای تابع نقشه
53
00:02:00,990 –> 00:02:02,939
و برای تابع فیلتر
54
00:02:02,939 –> 00:02:05,610
، آنها تکرارپذیر نامیده میشوند، بنابراین حدس میزنم که
55
00:02:05,610 –> 00:02:06,899
نوع نامگذاری در اینجا کمی ناسازگار
56
00:02:06,899 –> 00:02:09,270
است، اما اساساً
57
00:02:09,270 –> 00:02:11,280
سیاست تابع کاهشیافته تابعی را
58
00:02:11,280 –> 00:02:13,220
دنبالهای میگیرد و سپس
59
00:02:13,220 –> 00:02:16,490
مقدار اولیه را میگیرد که من معتقدم. اختیاری است
60
00:02:16,490 –> 00:02:22,130
و
61
00:02:22,130 –> 00:02:25,460
با اعمال
62
00:02:25,460 –> 00:02:28,970
مکرر این تابع بر روی آیتم های این
63
00:02:28,970 –> 00:02:32,030
دنباله، دنباله را به یک مقدار خروجی کاهش می دهد، بنابراین روشی که در
64
00:02:32,030 –> 00:02:33,710
رشته تاریک بیان می شود کمی
65
00:02:33,710 –> 00:02:36,050
پیچیده تر است، اما ما به
66
00:02:36,050 –> 00:02:38,480
برخی از آنها نگاه خواهیم کرد. مثالهایی در اینجا که در
67
00:02:38,480 –> 00:02:41,510
واقع به مجموعه دادههای ما برمیگردند بسیار خوب است، بنابراین فقط
68
00:02:41,510 –> 00:02:43,910
برای اینکه مطمئن شوید آنچه را که من در اینجا صحبت میکنم میبینید،
69
00:02:43,910 –> 00:02:45,560
بنابراین این مجموعه داده اصلی است
70
00:02:45,560 –> 00:02:48,500
که ما با آن کار میکنیم، یک
71
00:02:48,500 –> 00:02:50,720
ساختار داده تغییرناپذیر است، بنابراین چندین مورد وجود دارد.
72
00:02:50,720 –> 00:02:53,810
نام های دیگر تاپل است، بنابراین هر مورد
73
00:02:53,810 –> 00:02:55,670
در اینجا یک تاپل نام دارد و به این ترتیب می
74
00:02:55,670 –> 00:02:57,800
توانیم مطمئن شویم که من نمی توانم به اینجا دسترسی پیدا کنم و
75
00:02:57,800 –> 00:02:59,720
در واقع به طور تصادفی هر یک از
76
00:02:59,720 –> 00:03:02,050
این موارد یا کل ساختار
77
00:03:02,050 –> 00:03:04,040
را تغییر دهم، بنابراین ما می خواهیم انتخاب کنیم. این و
78
00:03:04,040 –> 00:03:06,020
ما در اینجا چند آزمایش
79
00:03:06,020 –> 00:03:08,750
با تابع کاهش یافته خود انجام می دهیم، بنابراین اولین
80
00:03:08,750 –> 00:03:10,550
کاری که می خواهم اینجا انجام دهم این است که می خواهم
81
00:03:10,550 –> 00:03:14,810
سن کل این گروه را محاسبه کنم،
82
00:03:14,810 –> 00:03:18,140
بنابراین اگر به خاطر دارید که در قسمت آخر این چه کار کردیم.
83
00:03:18,140 –> 00:03:21,470
سری ما
84
00:03:21,470 –> 00:03:26,140
چیزی شبیه به این انجام دادیم که در آن
85
00:03:26,140 –> 00:03:30,640
لیست مشتق شده را محاسبه کردیم
86
00:03:30,640 –> 00:03:33,650
که نام و سن همه این
87
00:03:33,650 –> 00:03:37,250
دانشمندان در سال 2017 را داشت و بنابراین من در
88
00:03:37,250 –> 00:03:38,780
واقع از این لیست مشتق شده برای
89
00:03:38,780 –> 00:03:40,640
اولین مثال در اینجا برای استفاده از
90
00:03:40,640 –> 00:03:43,489
تابع کاهش یافته استفاده می کنم. ما می خواهیم در اینجا انجام دهیم
91
00:03:43,489 –> 00:03:46,610
این است که می خواهیم سن کل را محاسبه کنیم
92
00:03:46,610 –> 00:03:48,080
و برای آن از
93
00:03:48,080 –> 00:03:51,470
تابع کاهش استفاده می کنیم و
94
00:03:51,470 –> 00:03:57,590
یک تابع لامبدا را تعریف می کنیم و من
95
00:03:57,590 –> 00:03:59,630
همچنین می توانم این کار را در خارج با یک تابع معمولی انجام دهم
96
00:03:59,630 –> 00:04:01,250
اما در اینجا با لامبدا من
97
00:04:01,250 –> 00:04:02,690
فکر می کنم مناسب است زیرا می
98
00:04:02,690 –> 00:04:04,190
دانید که می تواند واقعاً اظهاری باشد و
99
00:04:04,190 –> 00:04:06,890
همه می تواند در
100
00:04:06,890 –> 00:04:09,350
یک عبارت کوتاه قرار گیرد، بنابراین در اینجا کاری که می
101
00:04:09,350 –> 00:04:10,880
خواهم انجام دهم این است که یک لامبدا را تعریف
102
00:04:10,880 –> 00:04:13,730
می کنم که اولی دو آرگومان دارد.
103
00:04:13,730 –> 00:04:15,920
یکی است accumulator و مورد
104
00:04:15,920 –> 00:04:19,250
دوم مقداری است که می خواهم
105
00:04:19,250 –> 00:04:22,010
این را تایپ کنم و سپس در
106
00:04:22,010 –> 00:04:23,660
مورد معنای این قطعات جداگانه
107
00:04:23,660 –> 00:04:25,550
و نحوه کار آنها صحبت خواهم کرد، شاید شما بتوانید
108
00:04:25,550 –> 00:04:26,610
آن را بفهمید زیرا من
109
00:04:26,610 –> 00:04:29,580
این تابع را به این صورت متصل کرده ام. تابع lambda
110
00:04:29,580 –> 00:04:36,750
به طور مکرر به
111
00:04:36,750 –> 00:04:40,710
همه موارد در این لیست اعمال می شود و بنابراین Val
112
00:04:40,710 –> 00:04:43,020
همیشه آخرین موردی است که ما به آن
113
00:04:43,020 –> 00:04:45,659
نگاه می کنیم و انباشته کننده به
114
00:04:45,659 –> 00:04:48,930
نوعی یک متغیر در حال اجرا است که
115
00:04:48,930 –> 00:04:51,719
مقدار بازگشتی این تابع را به طور مکرر به روز می
116
00:04:51,719 –> 00:04:53,849
کند. مقدار
117
00:04:53,849 –> 00:04:56,460
جدید انباشتگر خواهد بود، بنابراین می دانم که این دیوانه به نظر می رسد،
118
00:04:56,460 –> 00:05:00,659
اما این به ما اجازه می دهد تا کاری
119
00:05:00,659 –> 00:05:07,550
شبیه به این انجام دهیم که در آن می توانیم بگوییم خوب است
120
00:05:07,550 –> 00:05:10,889
این نام ها را به
121
00:05:10,889 –> 00:05:14,520
یک مقدار کاهش دهید با استفاده از این قانون در اینجا
122
00:05:14,520 –> 00:05:17,189
لامبدا و ما می خواهیم با
123
00:05:17,189 –> 00:05:19,500
مقدار اولیه صفر برای
124
00:05:19,500 –> 00:05:23,009
انباشته شروع کنید، بنابراین اجازه دهید این را اجرا کنیم و سپس
125
00:05:23,009 –> 00:05:26,879
به خروجی okay 807 نگاهی بیندازیم،
126
00:05:26,879 –> 00:05:30,000
بنابراین این باید مجموع تمام
127
00:05:30,000 –> 00:05:33,210
این سنین در اینجا باشد و بیایید در مورد نحوه کارکرد آن صحبت
128
00:05:33,210 –> 00:05:34,919
کنیم که در اینجا می توانید ببینید. آیا ما
129
00:05:34,919 –> 00:05:37,289
داریم این تابع لامبدا است
130
00:05:37,289 –> 00:05:39,180
که تابعی است که فراخوانی کاهش یافته
131
00:05:39,180 –> 00:05:41,339
برای همه این موارد اعمال می شود و
132
00:05:41,339 –> 00:05:43,529
روشی که انجام می دهد یک مقدار اولیه
133
00:05:43,529 –> 00:05:46,500
برای انباشته ای که من در اینجا تنظیم کردم انتخاب می کند بنابراین
134
00:05:46,500 –> 00:05:48,690
در ابتدا انباشته 0 خواهد بود و
135
00:05:48,690 –> 00:05:52,979
سپس این لامبدا را در اینجا صدا می کند. با
136
00:05:52,979 –> 00:05:56,819
اولین مورد و در اینجا می توانید ببینید که
137
00:05:56,819 –> 00:06:00,539
ما مقدار فعلی
138
00:06:00,539 –> 00:06:06,000
انباشته را برمی گردانیم که 0 به اضافه مقدار 4
139
00:06:06,000 –> 00:06:08,430
یا 8 به علاوه فیلد سن از این
140
00:06:08,430 –> 00:06:10,349
آیتم در اینجا است که به آن منتقل می شود و سپس
141
00:06:10,349 –> 00:06:12,719
در دور بعدی چاه مقدار
142
00:06:12,719 –> 00:06:15,029
accumulator به روز شد، بنابراین در این
143
00:06:15,029 –> 00:06:17,550
مرحله 202 خواهد بود و سپس در دور بعدی
144
00:06:17,550 –> 00:06:19,889
این مورد را در اینجا می گیریم،
145
00:06:19,889 –> 00:06:22,229
مقدار انباشته 100 است
146
00:06:22,229 –> 00:06:24,750
202 و val این مورد در اینجا
147
00:06:24,750 –> 00:06:26,039
فرهنگ لغت است و اکنون ما هستیم با اضافه
148
00:06:26,039 –> 00:06:28,789
کردن مقدار انباشتگر و
149
00:06:28,789 –> 00:06:32,370
مقدار سنی که در این فرهنگ لغت پر شده است در
150
00:06:32,370 –> 00:06:34,469
اینجا و ما آن
151
00:06:34,469 –> 00:06:37,139
و غیره را برمی گردانیم، بنابراین به این ترتیب
152
00:06:37,139 –> 00:06:39,910
کل لیست را به یک
153
00:06:39,910 –> 00:06:42,520
عدد صحیح تبدیل می کنیم که مجموع
154
00:06:42,520 –> 00:06:45,430
همه اینها را نشان می دهد. نام ها در حال حاضر در Pytho دوباره راههای دیگری وجود دارد که
155
00:06:45,430 –> 00:06:47,350
میتوانید این محاسبه خاص را نشان دهید،
156
00:06:47,350 –> 00:06:49,540
به عنوان مثال
157
00:06:49,540 –> 00:06:51,280
میتوانستم به این شکل پیش رفته و
158
00:06:51,280 –> 00:06:55,240
مجموع X سن را برای X در نامها و سنها بگویم و
159
00:06:55,240 –> 00:06:57,550
همین کار را در
160
00:06:57,550 –> 00:06:59,590
یک نمایش خلاصهتر و زیباتر
161
00:06:59,590 –> 00:07:01,420
انجام میدادم. این نکته
162
00:07:01,420 –> 00:07:03,130
ممکن است از خود بپرسید که چرا من اصلاً
163
00:07:03,130 –> 00:07:05,320
نیاز به استفاده از تابع کاهش در این
164
00:07:05,320 –> 00:07:08,140
مورد دارم و دلیل آن این است که
165
00:07:08,140 –> 00:07:10,390
تابع کاهش در واقع می تواند بسیار
166
00:07:10,390 –> 00:07:14,260
فراتر از آنچه در اینجا دیده اید عمل کند، بنابراین ما
167
00:07:14,260 –> 00:07:16,000
می توانیم در مورد برخی موارد زیبا صحبت کنیم.
168
00:07:16,000 –> 00:07:18,460
مثالهای دیوانهکننده در اینجا چرا ما
169
00:07:18,460 –> 00:07:21,850
به کاربردهای جالبتر از تابع کاهشیافته نگاه نمیکنیم،
170
00:07:21,850 –> 00:07:23,800
بنابراین یک
171
00:07:23,800 –> 00:07:25,210
چیز جالب که فکر میکردم میتوانیم با
172
00:07:25,210 –> 00:07:26,890
تابع کاهشیافته انجام دهیم، گروهبندی
173
00:07:26,890 –> 00:07:29,590
دانشمندان بر اساس رشته است، بنابراین اساساً من
174
00:07:29,590 –> 00:07:32,650
میخواهم خروجیهایی مانند این داشته باشم. میخواهم
175
00:07:32,650 –> 00:07:35,950
این فرهنگ لغت را در اینجا پر کنم و
176
00:07:35,950 –> 00:07:39,700
میخواهم آن را با دانشمندانی
177
00:07:39,700 –> 00:07:43,990
که بر اساس رشته مربوطه گروهبندی شدهاند پر کنم و
178
00:07:43,990 –> 00:07:46,990
میتوانیم این کار را با استفاده خلاقانه از
179
00:07:46,990 –> 00:07:48,490
فیلد انباشته انجام دهیم، بنابراین آنچه را که
180
00:07:48,490 –> 00:07:49,420
میخواهیم انجام دهیم h پیش از این، ما
181
00:07:49,420 –> 00:07:51,700
تابعی را تعریف خواهیم کرد که میتوانیم آن
182
00:07:51,700 –> 00:07:55,090
را کاهش دهیم تا تابعی را کاهش دهیم که
183
00:07:55,090 –> 00:07:59,770
دانشمندان فهرست موجود ما را میگیرد و
184
00:07:59,770 –> 00:08:03,340
آن را به این حوزهها و گروهی از
185
00:08:03,340 –> 00:08:05,680
افراد به این روش اختصاص میدهد و بنابراین روشی که در آنجا انجام میدهیم
186
00:08:05,680 –> 00:08:07,300
187
00:08:07,300 –> 00:08:09,130
این است. در واقع راهی که میتوانید این کار را
188
00:08:09,130 –> 00:08:11,380
در یک عبارت لامبدا انجام دهید، اما
189
00:08:11,380 –> 00:08:13,120
میدانید که من تازه شروع به ضبط کردم،
190
00:08:13,120 –> 00:08:15,310
ضبط آن مثال را شروع کردم، مثل
191
00:08:15,310 –> 00:08:19,180
این بود که واقعاً از
192
00:08:19,180 –> 00:08:21,730
چیزی که میخواهم در اینجا به شما نشان دهم، کم کند، بنابراین اگر
193
00:08:21,730 –> 00:08:23,680
میخواهید این کار را به عنوان یک تمرین سرگرم کننده و
194
00:08:23,680 –> 00:08:25,150
سپس آن را در یک نظر در زیر قرار دهید اگر
195
00:08:25,150 –> 00:08:29,200
خوب است، بنابراین در اینجا من فقط
196
00:08:29,200 –> 00:08:33,130
عملکرد کاهنده خود را تعریف
197
00:08:33,130 –> 00:08:35,919
می کنم و مقدار ذخیره کننده و مقداری
198
00:08:35,919 –> 00:08:37,599
199
00:08:37,599 –> 00:08:40,240
را می گیرد. برای نگاه کردن به
200
00:08:40,240 –> 00:08:44,650
حوزه ای که دانشمند به آن تعلق دارد و
201
00:08:44,650 –> 00:08:49,839
سپس نام
202
00:08:49,839 –