از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
any() و all() در پایتون با مثال
سرفصلهای مطلب
معرفی any() و all()
در این آموزش، ما را پوشش خواهیم داد any()
و all()
توابع در پایتون
این any(iterable)
و all(iterable)
توابع داخلی در پایتون هستند و از زمان انتشار پایتون 2.5 وجود داشته اند. هر دو تابع معادل نوشتن یک سری از هستند or
و and
عملگرها به ترتیب بین هر یک از عناصر پاس iterable
. هر دوی آنها عملکردهای راحتی هستند که با جایگزین کردن حلقه های دیگ بخار کد را کوتاه می کنند.
هر دو روش در اسرع وقت اتصال کوتاه میکنند و مقداری را برمیگردانند، بنابراین حتی با تکرارپذیریهای بزرگ، تا آنجا که میتوانند کارآمد هستند.
و/یا اپراتورها
بیایید به خود یادآوری کنیم که چگونه and
/or
اپراتورها کار می کنند، همانطور که این توابع مبتنی هستند روی آنها را
یا اپراتور
این or
اپراتور ارزیابی می کند True
اگر هر یک از شرایط (عملکردها) وجود داشته باشد True
.
print("(2 == 2) or (3 == 3) evaluates to: " + str((2 == 2) or (3 == 3)))
print("(2 == 2) or (3 == 2) evaluates to: " + str((2 == 2) or (3 == 2)))
print("(2 == 0) or (3 == 2) evaluates to: " + str((2 == 0) or (3 == 2)))
خروجی:
(2 == 2) or (3 == 3) evaluates to: True
(2 == 2) or (3 == 2) evaluates to: True
(2 == 0) or (3 == 2) evaluates to: False
ما می توانیم چندین زنجیر کنیم or
s در یک عبارت واحد، و دوباره به ارزیابی خواهد شد True
اگر هر از شرایط هستند True
:
print(str(False or False or False or True or False))
این منجر به:
True
و اپراتور
این and
اپراتور ارزیابی می کند True
فقط در صورتی که همه شرایط وجود داشته باشد True
:
print("(2 == 2) and (3 == 3) evaluates to: " + str((2 == 2) and (3 == 3)))
print("(2 == 2) and (3 == 2) evaluates to: " + str((2 == 2) and (3 == 2)))
print("(2 == 0) and (3 == 2) evaluates to: " + str((2 == 0) and (3 == 2)))
خروجی:
(2 == 2) and (3 == 3) evaluates to: True
(2 == 2) and (3 == 2) evaluates to: False
(2 == 0) and (3 == 2) evaluates to: False
مشابه به or
، می توانیم چندین زنجیر کنیم and
اپراتورها، و آنها را ارزیابی خواهند کرد True
فقط اگر همه عملگرها به ارزیابی می کنند True
:
print(str(True and True and True and False and True))
این منجر به:
False
هر ()
روش any(iterable)
مانند یک سری رفتار می کند or
عملگرهای بین هر عنصر از iterable
گذشتیم برای جایگزینی حلقه های مشابه این مورد استفاده می شود:
for element in some_iterable:
if element:
return True
return False
ما به سادگی با تماس همین نتیجه را دریافت می کنیم any(some_iterable)
:
print(any((2 == 2, 3 == 2)))
print(any((True, False, False)))
print(any((False, False)))
اجرای این قطعه کد منجر به موارد زیر می شود:
True
True
False
توجه داشته باشید: ممکن است هنگام استفاده رفتار غیرمنتظره ای رخ دهد any()
با فرهنگ لغت و انواع داده غیر از بولی. اگر any()
با یک فرهنگ لغت استفاده می شود، بررسی می کند که آیا هر یک از آنها کلیدها ارزیابی به True
، نه ارزش های:
dict = {True : False, False: False}
print(any(dict))
این خروجی:
True
در حالی که، اگر any()
مقادیر را بررسی کرد، خروجی می شد False
.
روش any()
اغلب در ترکیب با map()
روش و درک فهرست:
old_list = (2, 1, 3, 8, 10, 11, 13)
list_if_even = list(map(lambda x: x % 2 == 0, old_list))
list_if_odd = (x % 2 != 0 for x in old_list)
print(list_if_even)
print(list_if_odd)
print("Are any of the elements even? " + str(any(list_if_even)))
print("Are any of the elements odd? " + str(any(list_if_odd)))
این خروجی:
(True, False, False, True, True, False, False)
(False, True, True, False, False, True, True)
Are any of the elements even? True
Are any of the elements odd? True
توجه داشته باشید: اگر خالی iterable
منتقل می شود به any()
، روش برمی گردد False
.
اگر می خواهید در مورد توابع map()، filter() و reduce() بیشتر بخوانید، ما شما را تحت پوشش قرار داده ایم!
همه()
این all(iterable)
روش مانند یک سری ارزیابی می شود and
عملگرهای بین هر یک از عناصر موجود در iterable
گذشتیم برای جایگزینی حلقه های مشابه این مورد استفاده می شود:
for element in iterable:
if not element:
return False
return True
روش برمی گردد True
تنها در صورتی که هر عنصر در iterable
ارزیابی می کند True
، و False
در غیر این صورت:
print(all((2 == 2, 3 == 2)))
print(all((2 > 1, 3 != 4)))
print(all((True, False, False)))
print(all((False, False)))
این خروجی:
False
True
False
False
توجه داشته باشید: درست مثل با any()
، رفتار غیرمنتظره ای ممکن است هنگام انتقال فرهنگ لغت ها و انواع داده ها اتفاق بیفتد boolean
. باز هم اگر all()
با یک فرهنگ لغت استفاده می شود، بررسی می کند که آیا همه موارد کلیدها ارزیابی به True
، نه ارزش های.
شباهت دیگر با any()
آن است all()
همچنین معمولاً در ترکیب با map()
درک عملکرد و لیست:
old_list = ("just", "Some", "text", "As", "An", "example")
list_begins_upper = list(map(lambda x: x(0).isupper(), old_list))
list_shorter_than_8 = (len(x) < 8 for x in old_list)
print(list_begins_upper)
print(list_shorter_than_8)
print("Do all the strings begin with an uppercase letter? " + str(all(list_begins_upper)))
print("Are all the strings shorter than 8? " + str(all(list_shorter_than_8)))
این خروجی:
(False, True, False, True, True, False)
(True, True, True, True, True, True)
Do all the strings begin with an uppercase letter? False
Are all strings shorter than 8? True
توجه داشته باشید: اگر خالی iterable
منتقل می شود به all()
، روش برمی گردد True
! این به این دلیل است که کد برای all()
بررسی می کند که آیا وجود دارد False
عناصر در iterable
، و در مورد لیست خالی هیچ عنصری وجود ندارد و بنابراین وجود ندارد False
عناصر یا
تبدیل بولی و توابع any()، all().
یکی از دلایل رایج سردرگمی و خطا هنگام استفاده از هر عملگر منطقی و بنابراین هنگام استفاده any()
و all()
همچنین، این چیزی است که زمانی اتفاق می افتد که عناصر از آن نباشند boolean
نوع داده. به عبارت دیگر، زمانی که آنها دقیقاً نیستند True
از False
اما در عوض باید مورد ارزیابی قرار گیرد True
یا False
.
برخی از زبان های برنامه نویسی غیر قابل ارزیابی نیستندboolean
انواع داده به boolean
س به عنوان مثال، جاوا شکایت میکند که شما چیزی مشابه آن را امتحان کنید if("some string")
یا if(15)
و به شما بگویم که نوع مورد استفاده شما قابل تبدیل نیست boolean
.
پایتون روی دست دیگر چنین کاری را انجام نمی دهد و در عوض آنچه را که به آن پاس داده اید تبدیل می کند boolean
بدون اینکه در مورد آن به شما هشدار داده شود.
پایتون اکثر چیزها را به True
با چند استثنا:
- هر مقدار عددی برابر با 0 (شامل 0.0) به عنوان تلقی می شود
False
. یک تصور غلط رایج در اینجا این است که مقادیر منفی (-2، -3.3،…) به عنوان تلقی می شوندFalse
آنها نیز هستند نه به عنوانFalse
! - هر دنباله (یا مجموعه) خالی به عنوان
False
از جمله خالیstring
s، خالیlist
s و غیره. به خاطر داشته باشید که هنگام استفاده ممکن است رفتار غیرمنتظره ای رخ دهدall()
با خالیiterable
(باز می گرددTrue
). - واقعی
boolean
ارزشFalse
البته به عنوانFalse
و همچنین ارزش ویژهNone
.
چند مثال از اینکه چگونه می توانیم از روشی که پایتون انواع داده های دیگر را “بولیزه می کند” استفاده کنیم any()
و all()
.
list_of_strings = ("yet", "another", "example","")
print("Do all strings have some content?", all(list_of_strings))
list_of_ints = (0, 0.0, -2, -5)
print("Are any of the ints different from 0?", any(list_of_ints))
این خروجی:
Do all strings have some content? False
Are any of the ints different from 0? True
به خاطر داشته باشید که ممکن است همچنان بخواهید با استفاده نکردن از متن ضمنی کد خواناتری بنویسید boolean
تبدیل به این شکل
نتیجه
هر دو any()
و all()
توابع برای راحتی وجود دارند و فقط زمانی باید استفاده شوند که کد را کوتاهتر کنند اما خوانایی را حفظ کنند.
در این مقاله به این موضوع پرداختیم any()
و all()
توابع و استفاده از آنها را از طریق چندین مثال به نمایش گذاشت.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-17 05:25:05