تابع any در پایتون — کاربردها به زبان ساده + فیلم آموزشی رایگان

۸۵۰ بازدید
آخرین به‌روزرسانی: ۲۱ دی ۱۴۰۱
زمان مطالعه: ۹ دقیقه
تابع 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 در پایتون به صورت 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 در پایتون استفاده کنیم؟

مثلاً فردی تصمیم می‌گیرد بهره‌وری بیشتری داشته باشد و فهرستی که در تصویر زیر نشان داده شده را آماده کرده است. اما این فرد تصمیم گرفته به خودش خیلی سخت نگیرد و قصد دارد اگر حتی یکی از موارد فهرست شده در تصویر زیر اتفاق افتادند، به خودش مقدار زیادی شیرینی هدیه بدهد.

مثال دستور 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 در پایتون بررسی شود.

سینتکس تابع 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 در پایتون

پیاده‌سازی کدهای این مثال با تابع 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 خواهد بود.

بر اساس رای ۱۶ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
freeCodeCampw3schools
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *