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

سرور مجازی NVMe

روش مقایسه تاپل ها در پایتون

0 20
زمان لازم برای مطالعه: 4 دقیقه


معرفی

وقتی دو یا چند تاپل دارید و باید آنها را با هم مقایسه کنید چه می کنید؟ ممکن است این کار بسیار ساده به نظر برسد، اما وقتی سطح را خراش دهید، متوجه خواهید شد که خیلی بیشتر از آن چیزی است که در ابتدا متوجه می‌شوید.

مقایسه تاپل ها در پایتون می تواند در برنامه های مختلفی مانند مرتب سازی و فیلتر کردن داده ها، مقایسه لیست ها و حتی نرم افزارهای تست استفاده شود. با این حال، همه روش‌های مقایسه تاپل یکسان ایجاد نمی‌شوند و انتخاب روش اشتباه می‌تواند منجر به نتایج غیرمنتظره یا کد ناکارآمد شود.

در این مقاله، ما به چند روش برای مقایسه تاپل ها در پایتون – با استفاده از عملگر مقایسه و all() تابع. روش عملکرد هر روش را توضیح خواهیم داد، مثال‌هایی ارائه می‌کنیم و در مورد جوانب مثبت و منفی هر رویکرد بحث خواهیم کرد.

مقایسه تاپل ها با استفاده از عملگرهای مقایسه

یکی از رایج‌ترین روش‌های مقایسه تاپل‌ها در پایتون، استفاده از آن است عملگرهای مقایسه. عملگرهای مقایسه در پایتون عبارتند از:

  • == → عملگر “برابر”.
  • != → عملگر “نه برابر”.
  • > → عملگر “بزرگتر از”.
  • < → عملگر “کمتر از”.
  • >= → عملگر “بزرگتر یا مساوی”.
  • <= → عملگر “کمتر یا مساوی”.

توجه داشته باشید: مقایسه تاپل در پایتون انجام شده است از نظر لغوی.

بیایید نگاهی به مثالی از مقایسه تاپل ها با استفاده از عملگرهای مقایسه بیندازیم:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

print(tuple1 < tuple2)  
print(tuple1 > tuple2)  
print(tuple1 == tuple2) 

بیایید نگاهی به < اول اپراتور اولین عنصر از tuple1 با عنصر اول مقایسه شده است tuple2. از آنجا که 1 < 4، عملگر مقایسه برمی گرداند True. سپس همان مقایسه برای عناصر دوم و سوم تاپل ها انجام می شود. و از آنجایی که هر سه آنها برمی گردند True، نتیجه نیز است True – تمام عناصر tuple1 “کمتر از” عناصر مربوطه هستند tuple2.

به طور مشابه، برای > عملگر، با مقایسه اولین عناصر از تاپل های داده شده شروع می کنیم. از آنجا که 1 > 4، برمی گردد False، نتیجه نهایی مقایسه نیز می باشد False. همین را می توان در مورد == اپراتور.

توجه داشته باشید که مقایسه با مقایسه انجام می شود هر جفت عنصر چندگانه مربوطه. تا زمانی که حداقل یک عنصر مقایسه شده باشد False، کل مقایسه نیز به عنوان ارزیابی می شود False. شبیه به نظر می رسد؟ چیزی شبیه به منطق AND، درست؟

اما اگر سناریوی زیر را داشته باشید چه می شود:

tuple1 = (1, 2, 3, 4)
tuple2 = (1, 2, 3, 6)

و ما می خواهیم بررسی کنیم که آیا آن تاپل ها برابر هستند یا خیر. همه عناصر مربوطه تا زمانی که آخرین عناصر برابر باشند – 1 == 1، 2 == 2، و غیره روی. همه آن مقایسه ها به عنوان ارزیابی می شوند True. و سپس، با آخرین مقایسه روبرو می شویم – 4 == 6. یعنی False، و، حتی اگر همه مقایسه های قبلی به عنوان ارزیابی شدند True، این یکی اساساً نتیجه کل مقایسه را به False.

سناریوی جالب دیگر زمانی است که سعی می کنید دو تاپل با طول های مختلف را با هم مقایسه کنید:

tuple1 = (1, 2, 3)
tuple2 = (1, 2, 3, 6)

حتی اگر دو عنصر اول آن تاپل ها یکسان هستند، tuple1 == tuple2 مقایسه باز هم باز خواهد گشت False زیرا tuple2 یک عنصر بیشتر از tuple1 و == اپراتور چیزی برای مقایسه ندارد 6 با.

یک موقعیت دیگر که در آن مقایسه تاپل ها با عملگرهای مقایسه ممکن است رفتار جالبی از خود نشان دهد، زمانی است که تاپل های مورد مقایسه دارای عناصری از انواع مختلف هستند:

tuple1 = (1, 2, 3)
tuple2 = (1, 2, "3")

print(tuple1 == tuple2) 

این نیز برمی گردد False چون عدد صحیح 3 از نظر لغوی با رشته برابر نیست "3".

توجه داشته باشید: نکته دیگری که باید به آن توجه داشت این است که این روش فقط از نظر عنصر تاپل ها را بدون در نظر گرفتن ساختار کلی تاپل ها مقایسه می کند. دو تاپل با عناصر یکسان در ترتیب متفاوت نابرابر در نظر گرفته می شوند (که مطابق با این واقعیت است که تاپل ها ساختارهای داده ای مرتب شده هستند).

مقایسه تاپل ها با استفاده از تابع all().

روش دیگر برای مقایسه تاپل ها در پایتون استفاده از توکار است all() تابع. این all() تابع یک تکرار (مانند یک تاپل) را به عنوان ورودی می گیرد و برمی گرداند True اگر همه عناصر در تکرار شونده به ارزیابی شوند True، و False در غیر این صورت. برای مقایسه دو تاپل با استفاده از all()، می توانیم مقایسه هر عنصر در تاپل ها را به یک مقدار بولی تبدیل کنیم و آنها را به عنوان آرگومان به all() تابع:

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

print(all(a < b for a, b in zip(tuple1, tuple2)))  
print(all(a > b for a, b in zip(tuple1, tuple2)))  
print(all(a == b for a, b in zip(tuple1, tuple2))) 

ما از توکار استفاده کردیم zip() تابع برای تکرار بر روی هر دو تاپل عنصر به عنصر و مقایسه هر عنصر با استفاده از a بیان ژنراتور. عبارت مولد یک تاپلی از دو عنصر ایجاد می کند، a و b، که با عناصر مربوط به tuple1 و tuple2 در موقعیت فعلی عملگر مقایسه <، >، یا == برای مقایسه استفاده می شود a و b، و نتیجه به یک مقدار بولی تبدیل می شود (True یا False). سپس مقادیر بولی به دست آمده به عنوان آرگومان به آن ارسال می شود all() تابع، که برمی گردد True اگر همه مقادیر باشند True، و False در غیر این صورت.

رفتار توصیف شده تقریباً شبیه رفتار عملگرهای مقایسه ساده است، اما این رویکرد به شما امکان می دهد به جای تکیه کردن، یک تابع مقایسه سفارشی را مشخص کنید. روی مقایسه عناصر پیش فرض اگر نیاز به مقایسه تاپل ها با ساختارهای پیچیده یا انواع داده های غیر استاندارد دارید، این می تواند مفید باشد.

نتیجه

در این مقاله چندین روش برای مقایسه تاپل ها در پایتون بررسی کرده ایم. ما در مورد استفاده از عملگر مقایسه و the بحث کرده‌ایم all() تابع. هنگام انتخاب روشی برای مقایسه تاپل ها، مهم است که ساختار داده ها و الزامات خاص مورد استفاده خود را در نظر بگیرید. اگر تاپل های ساده با ساختارهای یکسان دارید، عملگر مقایسه ممکن است ساده ترین راه حل باشد. اگر به کنترل بیشتری روی مقایسه نیاز دارید process، یا اگر تاپل های شما ساختار پیچیده ای دارند، all() عملکرد ممکن است مناسب تر باشد.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-01 14:00:12

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

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

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