পাইথনে টুপল তুলনা কীভাবে কাজ করে?


178

আমি কোর পাইথন প্রোগ্রামিং বইটি পড়ছি , এবং লেখক একটি উদাহরণ দেখান যেমন:

(4, 5) < (3, 5) # Equals false

সুতরাং, আমি ভাবছি, কীভাবে / কেন এটি মিথ্যা সমান হয়? অজগর এই দুটি টিপলকে কীভাবে তুলনা করে?

বিটিডব্লিউ, এটি বইয়ে ব্যাখ্যা করা হয়নি।

উত্তর:


190

টিপলগুলি অবস্থানের সাথে অবস্থানের সাথে তুলনা করা হয়: প্রথম টিউপলের প্রথম আইটেমটি দ্বিতীয় টিউপলের প্রথম আইটেমের সাথে তুলনা করা হয়; যদি তারা সমান না হয় (যেমন প্রথমটি দ্বিতীয়টির চেয়ে বড় বা ছোট) তবে এটি তুলনার ফলস্বরূপ, অন্যথায় দ্বিতীয় আইটেমটি বিবেচনা করা হয়, তৃতীয় এবং আরও অনেক কিছু।

দেখুন কমন সিকোয়েন্স অপারেশনস :

একই ধরণের সিকোয়েন্সগুলি তুলনাগুলি সমর্থন করে। বিশেষত, টিপলস এবং তালিকাগুলি সম্পর্কিত উপাদানগুলির সাথে তুলনা করে অভিধানিকভাবে তুলনা করা হয়। এর অর্থ সমান তুলনা করতে প্রতিটি উপাদানকে সমান তুলনা করতে হবে এবং দুটি ক্রম অবশ্যই একই ধরণের এবং একই দৈর্ঘ্য থাকতে হবে।

এছাড়াও মূল্য তুলনা আরও বিস্তারিত জানার জন্য:

অন্তর্নির্মিত সংগ্রহগুলির মধ্যে ডিক্সিকোগ্রাফিক তুলনা কাজ করে:

  • দুটি সংগ্রহ সমান তুলনা করার জন্য, তাদের অবশ্যই একই ধরণের হতে হবে, একই দৈর্ঘ্য থাকতে হবে এবং সংশ্লিষ্ট উপাদানগুলির প্রতিটি জোড়া অবশ্যই সমান তুলনা করতে হবে (উদাহরণস্বরূপ, [1,2] == (1,2) মিথ্যা কারণ প্রকারটি এক নয়)।
  • যে সংগ্রহগুলি অর্ডার তুলনা সমর্থন করে তাদের প্রথম অসম উপাদানগুলির মতোই আদেশ করা হয় (উদাহরণস্বরূপ, [1,2,x] <= [1,2,y]এর সমান মান রয়েছে x <= y)। যদি কোনও সম্পর্কিত উপাদান উপস্থিত না থাকে তবে সংক্ষিপ্ত সংগ্রহটি প্রথমে আদেশ করা হয় (উদাহরণস্বরূপ, [1,2] < [1,2,3]এটি সত্য)।

যদি সমান না হয়, সিকোয়েন্সগুলি তাদের প্রথম পৃথককারী উপাদানগুলির মতো একইভাবে অর্ডার করা হয়। উদাহরণস্বরূপ, সিএমপি ([1,2, x], [1,2, y]) সিএমপি (x, y) হিসাবে একই দেয়। যদি সংশ্লিষ্ট উপাদানটি বিদ্যমান না থাকে, তবে ছোট ক্রমটিকে ছোট হিসাবে বিবেচনা করা হবে (উদাহরণস্বরূপ, [1,2] <[1,2,3] সত্য প্রদান করে)।

নোট 1 : <এবং এর >অর্থ "এর চেয়ে ছোট" এবং "এর চেয়ে বড়" নয় তবে "এর আগে" এবং "এর পরে": সুতরাং (0, 1) "এর আগে" (1, 0)।

নোট 2 : টিউপলগুলি তাদের দৈর্ঘ্য অনুসারে তুলনামূলকভাবে এন-ডাইমেনশনাল স্পেসে ভেক্টর হিসাবে বিবেচনা করা উচিত নয় ।

দ্রষ্টব্য 3 : /programming/36911617/python-2-tuple-comp तुलना প্রশ্নের উল্লেখ : প্রথম স্তরের কোনও উপাদান সংশ্লিষ্টের চেয়ে বড় হলে কেবল একটি দ্বিখণ্ডকে "বড়" বলে মনে করবেন না দ্বিতীয় এক।


4
কথা বলার সময় <এবং বিভ্রান্তিকর হতে পারে >। উদাহরণস্বরূপ, (0, 1) < (1, 0)মূল্যায়ন True
কোনও নয়

4
@CMCDragonkai - হ্যাঁ চেষ্টা করুন: x = tuple([0 for _ in range(n)])এবং y এর জন্য একই করুন। এন = 100, 1000, 10,000, এবং 100,000 নির্ধারণ এবং চলমান %timeit x==yসময় অনুসারে যথাক্রমে .5, 4.6, 43.9 এবং 443 মাইক্রোসেকেন্ডের মান দেয় যা আপনি কার্যত পেতে পারেন ঠিক তত কাছাকাছি ও (এন) এর কাছাকাছি।
মাইকেল স্কট কুথবার্ট

8
@ জে.মনি আপনি কেন ভাবেন যে এটি বিভ্রান্তিকর হতে পারে?
ডন

1
@ চর্লিপার্কার <এবং এর >অর্থ "ছোট তারপরে" এবং "বৃহত্তর তারপরে" নয় তবে "আগে" আসে এবং "পরে" আসে: তাই (0, 1)"আগে আসে"(1, 0)
ডোন

3
@ ডন আমি অনুমান করি যে এটি একটি ধরণের উপর চাপ দেওয়ার জন্য কী ধরণের অর্ডার দেবে তা আমাদের কাছে পরিষ্কার নয়। আমার ধারণা, অজগর কেবল প্রথমে বৃহত্তম উল্লেখযোগ্য অঙ্কটি পরীক্ষা করে এবং মরতে যাওয়ার পথে অগ্রসর হয়ে মারা যায় ... (
পার্কারে

20

পাইথন ডকুমেন্টেশন তা ব্যাখ্যা করে।

টিপলস এবং তালিকাগুলি লিক্সোগ্রাফিকভাবে তুলনামূলকভাবে প্রয়োজনীয় উপাদানগুলির তুলনা করে ব্যবহার করা হয়। এর অর্থ সমান তুলনা করতে প্রতিটি উপাদানকে সমান তুলনা করতে হবে এবং দুটি ক্রম অবশ্যই একই ধরণের এবং একই দৈর্ঘ্য থাকতে হবে।


এই উত্তর থেকে লিঙ্ক করা পৃষ্ঠাটিতে উদ্ধৃত পাঠ্যটি মনে হচ্ছে না।
প্লাগওয়াশ

0

পাইথন 2.5 ডকুমেন্টেশন এটা ভাল ব্যাখ্যা করে।

টিপলস এবং তালিকাগুলি লিক্সোগ্রাফিকভাবে তুলনামূলকভাবে প্রয়োজনীয় উপাদানগুলির তুলনা করে ব্যবহার করা হয়। এর অর্থ সমান তুলনা করতে প্রতিটি উপাদানকে সমান তুলনা করতে হবে এবং দুটি ক্রম অবশ্যই একই ধরণের এবং একই দৈর্ঘ্য থাকতে হবে।

যদি সমান না হয়, সিকোয়েন্সগুলি তাদের প্রথম পৃথককারী উপাদানগুলির মতো একইভাবে অর্ডার করা হয়। উদাহরণস্বরূপ, সিএমপি ([1,2, x], [1,2, y]) সিএমপি (x, y) হিসাবে একই দেয়। যদি সংশ্লিষ্ট উপাদানটি বিদ্যমান না থাকে তবে সংক্ষিপ্ত ক্রমটি প্রথমে আদেশ করা হয় (উদাহরণস্বরূপ, [1,2] <[1,2,3])।

দুর্ভাগ্যক্রমে পৃষ্ঠাটি আরও সাম্প্রতিক সংস্করণের জন্য ডকুমেন্টেশনে অদৃশ্য হয়ে গেছে বলে মনে হয়।


0
পূর্ণসংখ্যার তুলনা সম্পর্কে আমার আগে কিছুটা বিভ্রান্তি ছিল, তাই আমি এটি উদাহরণের সাথে আরও শিক্ষামূলক বন্ধুত্বপূর্ণ হওয়ার জন্য ব্যাখ্যা করব

a = ('A','B','C') # see it as the string "ABC" b = ('A','B','D')

এটিকে তার সম্পর্কিত এএসসিআইআইতে রূপান্তর করা হয় ord('A') #65 অন্যান্য উপাদানগুলির

সুতরাং, >> a>b # True আপনি এটিকে স্ট্রিংয়ের মধ্যে তুলনা হিসাবে ভাবতে পারেন (এটি আসলে, আসলে)

একই জিনিসটি পূর্ণসংখ্যার জন্যও যায়।

x = (1,2,2) # see it the string "123" y = (1,2,3) x > y # False

কারণ (1 টি 1 এর চেয়ে বড় নয়, পরের দিকে যান 2 টি 2 এর চেয়ে বড় নয়, পরের 2 এ সরানো তিনটি-লিখিত চিত্রের চেয়ে কম -)

উপরের উত্তরে মূল বিষয় উল্লেখ করা হয়েছে

এটিকে একটি উপাদান হিসাবে মনে করুন অন্য বর্ণানুক্রমিকর আগে উপাদানটি কোনও উপাদানের চেয়ে বড় নয় এবং এক্ষেত্রে সমস্ত টিপল উপাদানকে একটি স্ট্রিং হিসাবে বিবেচনা করুন।


2
(1,2,3) > (1,2,2)দেয়True
বিশাল সিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.