تابع any در پایتون — کاربردها به زبان ساده + فیلم آموزشی رایگان
در برنامه نویسی پایتون ممکن است نیاز به چک کردن شرطی برای هر آیتم در یک تکرارگر (Iterable) مثل لیست در پایتون (یا تاپل، دیکشنری یا مجموعه) ارزیابی و True یا False بودن آن شرط بررسی شود. در چنین مواردی میتوان از تابع any در پایتون استفاده کرد که یکی از کاربردیترین ترفندهای پایتون به حساب میآید. در این مقاله، آموزش تابع any در پایتون بهطور جامع ارائه شده و با استفاده از مثالهایی ساده، نحوه عملکرد این تابع و همچنین تابع all در پایتون شرح داده شده است. معمولاً از عبارتهایی مثل دستور any در پایتون ، عملگر any در پایتون ، متد any در پایتون یا فانکشن any در پایتون هم برای خطاب قرار دادن این قابلیت عملکردی استفاده میشود.
فیلم آموزشی توابع Any و All در پایتون
کلمه انگلیسی any در فارسی به معنی «هر» است که مفهوم و کارکردی شبیه به OR منطقی در برنامه نویسی دارد. تابع all در پایتون نیز ماهیتی مشابه تابع any دارد و برای چک کردن این مسئله استفاده میشود که آیا شرطی برای تمام آیتمها در عنصری تکرارشونده (Iterable) برابر باTrue ارزیابی میشود یا خیر؟ بنابراین در این مقاله پس از آموزش جامع تابع any در پایتون به تابع all هم پرداخته شده است.
نوع داده بولین در پایتون
پیش از آنکه تابع any در پایتون و همچنین تابع all در پایتون شرح داده شوند، بهتر است نوع داده بولین (منطقی) در پایتون بهطور خلاصه مرور شود.
در پایتون میتوان تابعbool() را روی هر شیئی اعمال کرد تا ارزش درستی آن (یعنی True یا False بودنش) مشخص شود. در ادامه چند مثال در قطعه کد زیر آمده است که میتوان آنها را در محیط توسعه یا ویرایشگر دلخواه خود اجرا کرد. البته خروجی هم در کدهای زیر نشان داده شده است.
1# truth value of None is False
2print(bool(None))
3# Output
4False
5
6# truth value of an empty string ("") is False
7print(bool(""))
8# Output
9False
10
11# truth value of an empty list (or any iterable) is False
12print(bool([]))
13# Output
14False
15
16# truth value of 0 {int (0), float (0.0) and complex (0j)} is False
17print(bool(0))
18# Output
19False
همانطور که در قطعه کد بالا مشاهده میشود:
- None ارزش درستی برابر با False دارد.
- ارزش درستی عدد صفر (0 ) در تمام نمایشهای آن یعنی به صورت صحیح، اعشاری و مختلط،False است.
- تمام تکرارشوندههای خالی مثل لیستها، تاپلها و رشتهها دارای ارزش درستیFalse هستند.
بنابراین با این توضیحات، اکنون واضحتر بهنظر میرسد که ارزش درستی تمام مقادیر غیرصفر و همه تکرارشوندههای غیر پوچTrue است. حال پس از شرح این پیشنیازها، زمان آن فرا رسیده است تا به آموزش تابع any در پایتون پرداخته شود.
چگونه از تابع any در پایتون استفاده کنیم؟
برای شروع بهتر است ابتدا درکی از سینتکس این تابع بدست آید. سپس از چند مثال ساده استفاده میشود و پس از آن هم مثالهایی کاربردیتر ارائه خواهند شد.
سینتکس تابع any در پایتون
سینتکس تابع any در پایتون به صورتany(iterable) است که:
- اگرbool(x) برای هرx در iterable برابر باTrue باشد، تابع any در پایتون مقدارTrue را بازمیگرداند.
- اگر iterable خالی باشد، تابع any در پایتون مقدارFalse را بازمیگرداند.
بنابراین، تابع any در پایتون یک تکرارشونده یا همان iterable را به عنوان آرگومان دریافت و آن را بررسی میکند و اگر حداقل یکی از اقلام در تکرارشونده True باشد، خروجی تابع any همTrue خواهد بود.
معرفی فیلم های آموزش پایتون
در پلتفرم فرادرس دورههای آموزش پایتون در قالب یک مجموعه آموزشی گردآوری شدهاند. علاقهمندان به این زبان برنامه نویسی میتوانند برای شروع یادگیری پایتون از دورههای مقدماتی آن استفاده کنند. همچنین، چندین دوره آموزشی پروژهمحور نیز در این مجموعه برای ادامه یادگیری و تقویت مهارت برنامه نویسی پایتون در دسترس قرار دارند. در تصویر فوق تنها برخی از دورههای آموزشی پروژهمحور مجموعه آموزش پایتون ملاحظه میشوند.
- برای دسترسی به همه آموزش های پایتون فرادرس + اینجا کلیک کنید.
مثال هایی برای درک بهتر نحوه استفاده از تابع any در پایتون
در ادامه تعدادی مثال برای درک بهتر نحوه عملکرد تابع any در پایتون و چگونگی استفاده از آن ارائه شده است.
1list_1 = [0,0,0,1,0,0,0,0]
2# any(a list with at least one non-zero entry) returns True
3print(any(list_1))
4# Output
5True
6
7list_2 = [0j,0,0,0.0,0,0,0.0,0]
8# any(a list of zeros) returns False
9print(any(list_2))
10# Output
11False
12
13list_3 = [True, False, False]
14# any(a list with at least one True value) returns True
15print(any(list_3))
16# Output
17True
18
19list_4 = ["","","code more"]
20# any(a list with at least one non-empty string) returns True
21print(any(list_4))
22# Output
23True
24
25list_5 = ["","",""]
26# any(a list of empty strings) returns False
27print(any(list_5))
28# Output
29False
چگونه برای بررسی وجود عدد در رشته از تابع any در پایتون استفاده کنیم؟
حالا در این بخش برای بررسی اینکه آیا «هر» عددی در یک «رشته» (String) وجود دارد یا خیر، از تابع any در پایتون استفاده شده است. در ادامه، گامهای مورد نیاز شرح داده شدهاند:
- چیزی که قرار است بررسی شود: آیا هیچ عددی در رشته وجود دارد یا خیر؟
- برای دسترسی پیدا کردن به هر یک از کاراکترهای رشته مربوطه باید در طول آن رشته پیمایش کرد.
- به وسیله فراخوانی متُدisdigit()باید بررسی شود که آیا هر یک از این کاراکترها رقم (عدد) هستند یا نیستند.
- اگر کاراکتر مورد آزمون عدد باشد، isdigit() مقدار True را بازمیگرداند و اگر این کاراکتر هر یک از حروف الفبا باشد، مقدار آن Falseخواهد بود.
«لیستهای مفهومی» (List Comprehension) میتوانند در جمعآوری تمام این مقادیر منطقی (True و False ) بسیار مفید واقع شوند. بنابراین در ادامه مروری سریع بر لیستهای مفهپمی در پایتون انجام شده است.
مروری بر لیست مفهومی در پایتون
وقتی قصد ایجاد لیست جدید براساس مقادیر یک لیست فعلی وجود داشته باشد، از لیستهای مفهومی در پایتون استفاده میشود. لیست مفهومی یا List Comprehension سینتکس کوتاهتری دارد و استفاده از آن آسانتر است. مثلاً اگر لیستی از میوهها در پایتون داشته باشیم و بخواهیم لیستی براساس آن ایجاد کنیم که فقط میوههای دارای حرف «a» در آن وجود داشته باشند، میتوان از List Comprehension استفاده کرد. بدون لیست مفهومی، برنامه نویس ناچار است از حلقه for با یک آزمون شرطی (if) در داخل آن استفاده کند:
1fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
2newlist = []
3
4for x in fruits:
5 if "a" in x:
6 newlist.append(x)
7
8print(newlist)
- مقاله مرتبط: دستورات شرطی در پایتون — به زبان ساده
با استفاده از List Comprehension اما میتوان تمام کدهای فوق را به یک خط خلاصه کرد:
1fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
2
3newlist = [x for x in fruits if "a" in x]
4
5print(newlist)
بهطور کلی سینتکس List Comprehension به صورت زیر است:
1newlist = [expression for item in iterable if condition == True]
اکنون آمادگی لازم برای درک کدهای مربوط به برنامه بررسی وجود عدد در رشته با تابع any در پایتون بدست آمده است. بنابراین در بخش بعدی به ارائه مثالی در این خصوص پرداخته میشود.
برنامه بررسی وجود عدد در رشته با تابع any در پایتون
همانطور که در کدهای زیر آمده، رشته نمونه استفاده شده در این مثال یعنی coding**is**cool**345 در انتهایش دارای چند عدد است. بنابراین، فراخوانی تابع any در پایتون روی این رشته باید مقدار True را بازگرداند. برای بدست آوردن لیستی از مقادیر True و False بسته به اینکه کاراکتر مربوطه عدد هست یا خیر، از لیست مفهومی استفاده شده است.
1my_string = "coding**is**cool**345"
2are_there_digits = [char.isdigit() for char in my_string]
3print(any(are_there_digits))
4
5# Output
6True
در کدهای فوق، are_there_digits لیستی است که آیتمهای آن با تعداد آیتمهای رشته مربوطه برابرند. متناظر با هر کاراکتر در این رشته، یک ارزش درستی وجود دارد. اگر هر کاراکتر در رشته مربوطه عدد باشد، مقدار True بازگردانده میشود و اگر هم عدد نباشد، مطابق کدهای زیر مقدار آن False خواهد بود:
1print(are_there_digits)
2
3# Output
4[False, False, False, False, False, False, False, False, False, False, False,
5False, False, False, False, False, False, False, True, True, True]
چگونه برای بررسی وجود حروف در رشته از تابع any در پایتون استفاده کنیم؟
در این بخش نیز مثالی مشابه مثال قبلی ارائه شده است. این بار به جای اعداد، وجود حروف در یک رشته بررسی شده است.
رشتهای که در این مثال مورد آزمایش قرار میگیرد، رشته***456278))) است که هیچ حروف الفبایی در آن وجود ندارد. بنابراین همانطور که انتظار میرود، با فراخوانی تابع any در پایتون مقدار False در خروجی چاپ خواهد شد. برای بررسی اینکه آیا هر یک از کاراکترهای رشته از جنس حروف الفبا هست یا خیر، باید از متُدisalpha()استفاده کرد:
1my_string = "***456278)))"
2num = [char.isalpha() for char in my_string]
3print(any(num))
4
5# Output
6False
همانطور که در ادامه آمده،is_letter لیستی حاوی مقادیر False است:
1print(is_letter)
2
3# Output
4[False, False, False, False, False, False, False, False, False, False, False, False]
چگونه برای ترکیب چند شرط به جای OR منطقی از تابع any در پایتون استفاده کنیم؟
مثلاً فردی تصمیم میگیرد بهرهوری بیشتری داشته باشد و فهرستی که در تصویر زیر نشان داده شده را آماده کرده است. اما این فرد تصمیم گرفته به خودش خیلی سخت نگیرد و قصد دارد اگر حتی یکی از موارد فهرست شده در تصویر زیر اتفاق افتادند، به خودش مقدار زیادی شیرینی هدیه بدهد.
در این مثال لازم است توجه شود چندین شرط وجود دارند که باید در نظر گرفته شوند، اما حتی اگر یکی از آنها برقرار (True ) باشد، اقدام تشویقی مورد نظر انجام خواهد شد.
این مورد بسیار شبیه به گزاره if است که در آن باید بررسی شود آیا نتیجه چندین شرط متصل به هم با عملگر or منطقی برابر True خواهد شد یا نخواهد شد. برای انجام این کار، تابع any در پایتون بسیار مفید و کاربردی است.
فرض میشودN شرط c1 ، c2 ، c3 تا cN وجود دارد. لازم است شبهکدهای زیر در نظر گرفته شوند:
if c1 or c2 or ... c_(N-1) or CN: # DO THIS else: # DO THIS
حالا میتوان تمام این شرطها را در یک Iterable، مثلاً یک لیست یا یک تاپل جمعآوری و سپس همانطور که در ادامه آمده، برای بررسی اینکه آیا یک یا بیش از یک شرط برقرار (True ) است، تابع any در پایتون را برای آن Iterable فراخوانی کرد. استفاده از این روش کار را به میزان زیادی سادهتر میکند:
1conditions = [c1,c2,..., c_N]
2
3if any(conditions):
4 # DO THIS
5else:
6 # DO THIS
چگونه از تابع all در پایتون استفاده کنیم؟
تابع all هم مشابه تابع any در پایتون است، با این تفاوت که خروجی تابع all در پایتون در صورتی True خواهد بود که ارزش تمام عناصر Iterable ارجاع شده آن برابر باTrue باشد. در واقع تابع all در پایتون به نوعی مشابه عملگر And عمل میکند. ابتدا بهتر است سینتکس تابع all در پایتون بررسی شود.
- مطلب مرتبط: عملگرها در پایتون (Operators) — به زبان ساده
سینتکس تابع all در پایتون
سینتکس تابع all در پایتون به صورت all(iterable) است که در آن:
- اگرbool(x) برای تمام مقادیرx در iterable برابر باTrue باشد، مقدار تابع all نیز برابر باTrue خواهد بود.
- اگر iterable خالی باشد، خروجی تابعall در پایتون مقدار True خواهد بود.
تابع all در پایتون «تکرارشوندهای» (Iterable) را به عنوان آرگومان دریافت میکند؛ عملکرد این تابع به این صورت است که خروجی آن تنها در صورتی True خواهد بود که ارزش تمام اقلام داخل آن تکرارشونده برابر با True باشد. در تمام حالتهایی به غیر از این، تابع all در پایتون مقدارFalse را به خروجی ارجاع خواهد داد.
چگونه برای بررسی تماماً حروف بودن کاراکترهای رشته از تابع all در پایتون استفاده کنیم؟
بهتر است از همان مثالهای قبلی که برای تابع any در پایتون استفاده شدند، برای تابع all هم استفاده کرد. در این بخش نیز برخی از خصوصیتهای موجود در رشتهها مورد بررسی قرار گرفتهاند.
رشتهcoding**is**cool که به عنوان نمونه در این بخش استفاده شده است، علاوهبر حروف الفبا، حاوی کاراکتر خاص* هم هست. بنابراین، وقتی با استفاده از تابع all در پایتون بررسی میشود که آیا تمام کاراکترهای موجود در این رشته حروف الفبا هستند یا خیر، باید مقدار False در خروجی دریافت شود:
1my_string = "coding**is**cool"
2are_all_letters = [char.isalpha() for char in my_string]
3print(all(are_all_letters))
4# Output
5False
6
7print(are_all_letters)
8# Output
9[True, True, True, True, True, True, False, False, True, True, False, False,
10True, True, True, True]
در کدهای فوق ملاحظه میشود که چگونه لیستare_all_letters در تمام موقعیتهایی که کاراکتر* وجود دارد، دارای مقادیر False است.
چگونه برای بررسی تماماً عددی بودن کاراکترهای رشته از تابع all در پایتون استفاده کنیم؟
در این بخش، از تابع all در پایتون برای بررسی این مسئله استفاده شده است که آیا تمام کاراکترهای رشته عددی هستند یا خیر؟ 56456278 رشتهای است که در این مثال به عنوان نمونه استفاده میشود. این رشته تنها حاوی اعداد است، بنابراین فراخوانی تابع all در آن باید ارزشTrue را به خروجی ارجاع دهد؛ زیرا مقدار تمام اعضا یا درایههای لیست مفهومی در این مثال،Trueاست.
1my_string = "56456278"
2are_all_digits = [char.isdigit() for char in my_string]
3print(all(are_all_digits))
4# Output
5True
6
7print(are_all_digits)
8# Output
9[True, True, True, True, True, True, True, True]
چگونه برای ترکیب چند شرط به جای AND منطقی از تابع all در پایتون استفاده کنیم؟
در این بخش مثالی برای ترکیب چند شرط به جای AND منطقی با استفاده از تابع all در پایتون ارائه شده است. این بار، فرض میشود فردی در رقابت برای گرفتن یک iPad به عنوان جایزه است. برای برنده شدن این جایزه، فرد باید همه موارد فهرست شده را انجام دهد.
پیادهسازی کدهای این مثال با تابع all در پایتون بسیار مشابه استفاده از گزارهifبرای بررسی این موضوع است که آیا حاصل چندین شرط به وسیله عملگر منطقیand برابر با مقدارTrue خواهد بود یا خیر؟ در ادامه، شبهکد استفاده از دستور if برای پیادهسازی این مسئله آمده است:
if c1 and c2 and ... c_(N-1) and CN: # DO THIS else: # DO THIS
برای خلاصهتر کردن کدها ميتوان تابع all در پایتون را به کار برد. برای انجام این کار باید شرطها را در یک Iterable ذخیره و سپس تابع all را فراخوانی کرد و آن Iterable را به تابع all ارجاع داد:
conditions = [c1,c2,..., c_N] if all(conditions): # DO THIS else: # DO THIS
جمعبندی
امکانات و قابلیتهای منحصربهفردی در زبان پایتون وجود دارند که با استفاده از آنها ميتوان کدنویسی را تمیزتر و خلاصهتر انجام داد. یادگیری ترفندهای پایتون میتواند به افزایش مهارت برنامه نویسی پایتون و پیادهسازی قابلیتهای پیچیدهتر بسیار کمک کند. تابع any در پایتون و تابع all از جمله ترفندهای پایتون به حساب میآیند که در این مقاله به آموزش نحوه استفاده از آنها پرداخته شد.
برای استفاده از تابع any در پایتون میتوان یک Iterable را به عنوان آرگومان به آن ارجاع داد؛ در صورتی که هر یک از عناصر آن Iterable ارزش Trueداشته باشد، خروجی تابع any در پایتون هم True خواهد بود. در این مقاله برای تابع Any در پایتون تعدادی مثال ارائه شد تا کاربرد و نحوه استفاده از این تابع بهتر مشخص شود. مثلاً میتوان از تابع any در پایتون برای بررسی وجود عدد در یک رشته متنی استفاده کرد. همچنین میتوان تابع any را برای ترکیب کردن چند شرط به جای استفاده از OR منطقی به کار برد.
تابع all هم با فراخوانی شدن روی یک Iterable، بررسی میکند که آیا تمام عناصر آن Iterable دارای ارزش True هستند یا خیر و در این صورت، خروجی این تابع True خواهد بود. اگر حتی یکی از عناصر Iterable مربوطه False باشد، خروجی تابع all در پایتون هم False خواهد بود.