از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش مقایسه تاپل ها در پایتون
سرفصلهای مطلب
معرفی
وقتی دو یا چند تاپل دارید و باید آنها را با هم مقایسه کنید چه می کنید؟ ممکن است این کار بسیار ساده به نظر برسد، اما وقتی سطح را خراش دهید، متوجه خواهید شد که خیلی بیشتر از آن چیزی است که در ابتدا متوجه میشوید.
مقایسه تاپل ها در پایتون می تواند در برنامه های مختلفی مانند مرتب سازی و فیلتر کردن داده ها، مقایسه لیست ها و حتی نرم افزارهای تست استفاده شود. با این حال، همه روشهای مقایسه تاپل یکسان ایجاد نمیشوند و انتخاب روش اشتباه میتواند منجر به نتایج غیرمنتظره یا کد ناکارآمد شود.
در این مقاله، ما به چند روش برای مقایسه تاپل ها در پایتون – با استفاده از عملگر مقایسه و
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