وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

any() و all() در پایتون با مثال

0 52
زمان لازم برای مطالعه: 5 دقیقه


معرفی 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

ما می توانیم چندین زنجیر کنیم ors در یک عبارت واحد، و دوباره به ارزیابی خواهد شد 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از جمله خالی strings، خالی lists و غیره. به خاطر داشته باشید که هنگام استفاده ممکن است رفتار غیرمنتظره ای رخ دهد 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید