python - কিছু ক, খ যেমন সর্বাধিক(ক, খ)!=সর্বোচ্চ(খ, ক) আছে?




python-3.x (2)

পাইথন ৩.x এ, কিছু a , b যেমন max(a, b) != max(b, a) ?

a এবং b বিল্ট-ইন পাইথন টাইপের হওয়া উচিত এবং এতে কোনও রূপান্তর থাকতে হবে না।

b এবং b ধরণটি হতে পারে: নাম, ফ্লোট, বুল, তালিকা, tuple ...

উদাহরণ:

a = 1 # Correct
a = [1, 2] # Correct
a = float('nan') # Wrong

এটি সমস্ত মানদণ্ডকে সন্তুষ্ট করে:

>>> max(1.0, float("nan"))
1.0

>>> max(float("nan"), 1.0)
nan

এর কারণ হল != বা float("nan") সাথে অন্য যে কোনও তুলনা সর্বদা মিথ্যা প্রত্যাবর্তন করে।

আরও সাধারণভাবে, যখন আমরা, max(a, b) != max(b, a) এর টাইপ (গুলি) মোট অর্ডার সরবরাহ না করে তখন আমরা max(a, b) != max(b, a) পারি। ড্যানিয়েল মেসেজো যেমন উল্লেখ করেছেন, সেটগুলিরও এই সম্পত্তি রয়েছে। সেটের জন্য < অর্থ 'কঠোর উপসেট', তবে {1, 2} এবং {3, 4} অন্যটির কোনও কঠোর উপসেট নয়, তাই:

>>> max({1, 2}, {3, 4})
{1, 2}

>>> max({3, 4}, {1, 2})
{3, 4}

প্রযুক্তিগতভাবে max(a, b) != max(b, a) কারণ 1 == True , তবে এখনও একটি পর্যবেক্ষণযোগ্য পার্থক্য রয়েছে:

>>> max(True, 1)
True

>>> max(1, True)
1

documentation অনুসারে, max অন ​​সেট ব্যবহার অনির্ধারিত ফলাফল দেয়:

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

এখানে একটি উদাহরণ,

a = {1, 2}
b = {2, 3}
print(max(b, a) != max(a, b))

আউটপুট

True






python-3.x