در برنامه نویسی پایتون ممکن است نیاز به چک کردن شرطی برای هر آیتم در یک تکرارگر (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
بودنش) مشخص شود. در ادامه چند مثال در قطعه کد زیر آمده است که میتوان آنها را در محیط توسعه یا ویرایشگر دلخواه خود اجرا کرد. البته خروجی هم در کدهای زیر نشان داده شده است.
# truth value of None is False
print(bool(None))
# Output
False
# truth value of an empty string ("") is False
print(bool(""))
# Output
False
# truth value of an empty list (or any iterable) is False
print(bool([]))
# Output
False
# truth value of 0 {int (0), float (0.0) and complex (0j)} is False
print(bool(0))
# Output
False
همانطور که در قطعه کد بالا مشاهده میشود:
- 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 در پایتون و چگونگی استفاده از آن ارائه شده است.
list_1 = [0,0,0,1,0,0,0,0]
# any(a list with at least one non-zero entry) returns True
print(any(list_1))
# Output
True
list_2 = [0j,0,0,0.0,0,0,0.0,0]
# any(a list of zeros) returns False
print(any(list_2))
# Output
False
list_3 = [True, False, False]
# any(a list with at least one True value) returns True
print(any(list_3))
# Output
True
list_4 = ["","","code more"]
# any(a list with at least one non-empty string) returns True
print(any(list_4))
# Output
True
list_5 = ["","",""]
# any(a list of empty strings) returns False
print(any(list_5))
# Output
False
چگونه برای بررسی وجود عدد در رشته از تابع any در پایتون استفاده کنیم؟
حالا در این بخش برای بررسی اینکه آیا «هر» عددی در یک «رشته» (String) وجود دارد یا خیر، از تابع any در پایتون استفاده شده است. در ادامه، گامهای مورد نیاز شرح داده شدهاند:
- چیزی که قرار است بررسی شود: آیا هیچ عددی در رشته وجود دارد یا خیر؟
- برای دسترسی پیدا کردن به هر یک از کاراکترهای رشته مربوطه باید در طول آن رشته پیمایش کرد.
- به وسیله فراخوانی متُد isdigit()
باید بررسی شود که آیا هر یک از این کاراکترها رقم (عدد) هستند یا نیستند.
- اگر کاراکتر مورد آزمون عدد باشد، isdigit()
مقدار True
را بازمیگرداند و اگر این کاراکتر هر یک از حروف الفبا باشد، مقدار آن False
خواهد بود.
«لیستهای مفهومی» (List Comprehension) میتوانند در جمعآوری تمام این مقادیر منطقی ( True
و False
) بسیار مفید واقع شوند. بنابراین در ادامه مروری سریع بر لیستهای مفهپمی در پایتون انجام شده است.
مروری بر لیست مفهومی در پایتون
وقتی قصد ایجاد لیست جدید براساس مقادیر یک لیست فعلی وجود داشته باشد، از لیستهای مفهومی در پایتون استفاده میشود. لیست مفهومی یا List Comprehension سینتکس کوتاهتری دارد و استفاده از آن آسانتر است. مثلاً اگر لیستی از میوهها در پایتون داشته باشیم و بخواهیم لیستی براساس آن ایجاد کنیم که فقط میوههای دارای حرف «a» در آن وجود داشته باشند، میتوان از List Comprehension استفاده کرد. بدون لیست مفهومی، برنامه نویس ناچار است از حلقه for با یک آزمون شرطی (if) در داخل آن استفاده کند:
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
- مقاله مرتبط: دستورات شرطی در پایتون — به زبان ساده
با استفاده از List Comprehension اما میتوان تمام کدهای فوق را به یک خط خلاصه کرد:
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)
بهطور کلی سینتکس List Comprehension به صورت زیر است:
newlist = [expression for item in iterable if condition == True]
اکنون آمادگی لازم برای درک کدهای مربوط به برنامه بررسی وجود عدد در رشته با تابع any در پایتون بدست آمده است. بنابراین در بخش بعدی به ارائه مثالی در این خصوص پرداخته میشود.
برنامه بررسی وجود عدد در رشته با تابع any در پایتون
همانطور که در کدهای زیر آمده، رشته نمونه استفاده شده در این مثال یعنی coding**is**cool**345
در انتهایش دارای چند عدد است. بنابراین، فراخوانی تابع any در پایتون روی این رشته باید مقدار True
را بازگرداند. برای بدست آوردن لیستی از مقادیر True
و False
بسته به اینکه کاراکتر مربوطه عدد هست یا خیر، از لیست مفهومی استفاده شده است.
my_string = "coding**is**cool**345"
are_there_digits = [char.isdigit() for char in my_string]
print(any(are_there_digits))
# Output
True
در کدهای فوق، are_there_digits
لیستی است که آیتمهای آن با تعداد آیتمهای رشته مربوطه برابرند. متناظر با هر کاراکتر در این رشته، یک ارزش درستی وجود دارد. اگر هر کاراکتر در رشته مربوطه عدد باشد، مقدار True
بازگردانده میشود و اگر هم عدد نباشد، مطابق کدهای زیر مقدار آن False
خواهد بود:
print(are_there_digits)
# Output
[False, False, False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, True, True, True]
چگونه برای بررسی وجود حروف در رشته از تابع any در پایتون استفاده کنیم؟
در این بخش نیز مثالی مشابه مثال قبلی ارائه شده است. این بار به جای اعداد، وجود حروف در یک رشته بررسی شده است.
رشتهای که در این مثال مورد آزمایش قرار میگیرد، رشته ***456278)))
است که هیچ حروف الفبایی در آن وجود ندارد. بنابراین همانطور که انتظار میرود، با فراخوانی تابع any در پایتون مقدار False
در خروجی چاپ خواهد شد. برای بررسی اینکه آیا هر یک از کاراکترهای رشته از جنس حروف الفبا هست یا خیر، باید از متُد isalpha()
استفاده کرد:
my_string = "***456278)))"
num = [char.isalpha() for char in my_string]
print(any(num))
# Output
False
همانطور که در ادامه آمده، is_letter
لیستی حاوی مقادیر False است:
print(is_letter)
# Output
[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 فراخوانی کرد. استفاده از این روش کار را به میزان زیادی سادهتر میکند:
conditions = [c1,c2,..., c_N]
if any(conditions):
# DO THIS
else:
# 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
در خروجی دریافت شود:
my_string = "coding**is**cool"
are_all_letters = [char.isalpha() for char in my_string]
print(all(are_all_letters))
# Output
False
print(are_all_letters)
# Output
[True, True, True, True, True, True, False, False, True, True, False, False,
True, True, True, True]
در کدهای فوق ملاحظه میشود که چگونه لیست are_all_letters
در تمام موقعیتهایی که کاراکتر *
وجود دارد، دارای مقادیر False است.
چگونه برای بررسی تماماً عددی بودن کاراکترهای رشته از تابع all در پایتون استفاده کنیم؟
در این بخش، از تابع all در پایتون برای بررسی این مسئله استفاده شده است که آیا تمام کاراکترهای رشته عددی هستند یا خیر؟ 56456278
رشتهای است که در این مثال به عنوان نمونه استفاده میشود. این رشته تنها حاوی اعداد است، بنابراین فراخوانی تابع all در آن باید ارزش True
را به خروجی ارجاع دهد؛ زیرا مقدار تمام اعضا یا درایههای لیست مفهومی در این مثال، True
است.
my_string = "56456278"
are_all_digits = [char.isdigit() for char in my_string]
print(all(are_all_digits))
# Output
True
print(are_all_digits)
# Output
[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 خواهد بود.