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


11

পাইথন 3.x, সেখানে কিছু a, bযে এই ধরনের max(a, b) != max(b, a)?

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

ধরণ aএবং bহতে পারে: NUM, ভাসা, bool,, তালিকা, tuple ...

উদাহরণ:

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

1
আপনার প্রশ্নটি পরিষ্কার নয়
seralouk

আমি মনে করি না যে কোনও আছে ... maxএকটি অন্তর্নির্মিত ফাংশন যা কোনও পুনরাবৃত্তিযোগ্য অবজেক্টটিকে ইনপুট হিসাবে গ্রহণ করে । সুতরাং, a,bহিসাবে একই b,aঅত: পর max(a,b)সমান নয়max(b,a)
Anwarvic

1
এটি একটি ভাল প্রশ্ন তবে আপনার এটি সম্পাদনা করা উচিত এবং এটি আরও ব্যাখ্যা করা উচিত
এল.হাম

2
আপনার সম্পাদনাটি সর্বাধিক আপ করা উত্তরের নীচে আপনার মন্তব্যের প্রসঙ্গে অর্থবোধ করে। সেখানে এবং এখানে আপনি যুক্তি দিতে ব্যর্থ হন যা float('nan')কোনও অন্তর্নির্মিত ধরণের নয়। আমি অনুমান হবে "বিল্ট-ইন প্রকার" কিছু যদি আপনি একটি নতুন তৈরি করেও তৈরি করতে পারেন মানে হবে class
টিপিওম

2
যদি বাদ দিতে চান float('nan')তবে কেন? স্পষ্টতই, আপনি একটি প্রশ্ন জিজ্ঞাসা করার অনুমতি দিয়েছেন যাতে float('nan')আপনি চাইলে এমন কিছু বাদ দেন ; এটাই সমস্যা নয় সমস্যাটি ঠিক যে আপনি যা জিজ্ঞাসা করতে চাইছেন তা কেউই নিশ্চিত করে না।
নাট

উত্তর:


17

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

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

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

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

সাধারণত, max(a, b) != max(b, a)যখন আমাদের ধরণের ধরণেরগুলি a, bমোট ক্রম সরবরাহ করে না তখন আমরা থাকতে পারি। ড্যানিয়েল মেসেজো যেমন উল্লেখ করেছেন, সেটগুলিরও এই সম্পত্তি রয়েছে। সেটের জন্য <মানে 'কঠোর উপসেট', কিন্তু {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

1
বাহ ... তা কেন ??
আনোয়ারভিক

7
@ স্ট্যাকএফএফ 4 যদি float("nan")অন্তর্নির্মিত না হয় তবে এটি কী? এটি অবশ্যই অন্তর্নির্মিত।
সান্য্যাশ

9
@ স্ট্যাকএফএফ 4: float('nan')এটি একটি ফ্লোট। এটি floatঠিক সেখানেই বলেছে , সুতরাং আপনি কীসের প্রত্যাশা করেছিলেন তা আমি নিশ্চিত নই। আপনি চাইলে এটি পরীক্ষা করে typeদেখতে পারেন।
ব্যবহারকারী 2357112

1
@ আনওয়ারভিচ: মজার বিষয় হল এটি কোনও অজগর বিষয় নয়, এটি আসলে হার্ডওয়্যারে কীভাবে ভাসমান বাস্তবায়ন করা হয়। NaN প্রায় প্রতিটি প্রোগ্রামিং ভাষার প্রত্যেকটির সাথে মিথ্যের তুলনা করে।
মাকিং হাঁস

2
@ নাট: তবে কেউ বেশিরভাগ সময় ব্যতিক্রম চায় না। এই maxআচরণটি সি থেকে আলাদাভাবে এটি সংজ্ঞায়িত করার একটি নিদর্শন fmax(যা NaN প্রচারের গ্যারান্টি দেয়) পরিবর্তে এমন কিছু হিসাবে a<b ? b : aতৈরি হয় যা aতুলনাটি মিথ্যা হলে সর্বদা উত্পন্ন হয়। NaN "অর্ডারড" রাইটিং হয়। অন্য কোনও সংখ্যা, তাই a < NaNসর্বদা মিথ্যা এবং তা হ'লNaN < b
পিটার কর্ডেস

5

ডকুমেন্টেশন অনুসারে , maxসেটগুলিতে ব্যবহার অনির্ধারিত ফলাফল দেয়:

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

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

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

আউটপুট

True

এখানে লক্ষ্য করার মতো বিষয় যে "অপরিজ্ঞাত ফলাফলগুলি" সম্ভবত পাইথনগুলিতে অন্য কয়েকটি ভাষার চেয়ে সানার। কোনও অনুনাসিক অসুরগুলি সম্ভবত নেই এবং এটি সম্ভবত একটি ব্যতিক্রমও বাড়ায় না। এটি কেবল বেশিরভাগ স্বেচ্ছাসেবী মান ( minএবং max) বা অর্ডারিং (এর জন্য sorted) প্রদান করে।
ব্ল্যাককিংহ্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.