পাইথন 3 এর সাথে আমি কীভাবে সিএমপি (ক, খ) ব্যবহার করতে পারি?


16

আমাকে জানানো হয়েছিল যে cmpফাংশনটি কোড-গল্ফের জন্য খুব কার্যকর হতে পারে । তবে দুর্ভাগ্যক্রমে পাইথন 3 এর কোনও cmpফাংশন নেই।

সুতরাং cmpঅজগর 3 মধ্যে যে সংক্ষিপ্ত সমতুল্য কাজ করে?


3
cmpগল্ফিংয়ের প্রসঙ্গে আপনি যে সন্ধান করছেন বা বিকল্প হিসাবে তা স্পষ্ট করে দেখা উচিত । অন্যথায়, এটি খুব সম্ভবত একটি সাধারণ প্রোগ্রামিং প্রশ্ন হিসাবে বন্ধ হয়ে যেতে পারে।
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার আমি মনে করি এটি ওপি-র গল্ফ পরামর্শ প্রশ্নের প্রসঙ্গে যেখানে প্রশ্নটি পাইথন ৩. জিজ্ঞাসা করার cmp
পরেও

@ এক্সনর আমি জানি এটি হ'ল, তবে অন্যরা হয়ত তা নাও করতে পারে।
মার্টিন এন্ডার

যদি এটি জানতে সহায়ক হয় তবে cmp(a,b)আপনি পাইথন ২ এ ব্যবহার করতে পারেন
mbomb007

উত্তর:


34

পাইথন 3 নেই cmp । গল্ফিংয়ের জন্য, আপনি করতে পারেন

১১ টি চর

(a>b)-(a<b)

যা 3 টি চর হারিয়েছে cmp(a,b)

মজাদারভাবে, এটিও একটি "অফিসিয়াল" কাজ। কি পাইথন 3 নতুন "(আপনি কি সত্যিই প্রয়োজন এর পৃষ্ঠাটি জানাচ্ছে cmp()কার্যকারিতা, আপনি অভিব্যক্তি ব্যবহার করতে পারে (a > b) - (a < b)সমতুল হিসাবে cmp(a, b)।)"


15
অগ্রাধিকার সমস্যা থেকে সাবধান! সিএমপি এর প্রকৃত সমতুল্য (a, b) হ'ল ((a> b) - (a <b))
স্পার

যদি a বা b আরও জটিল ভাব প্রকাশ করে - খুব দীর্ঘ সময়ের সাথে ফাংশনগুলিতে কল করুন, তবে এটি আপনার চলমান সময়ের জন্য খুব খারাপ। সবচেয়ে খারাপ বিষয়, যদি কোনও বা বি এর সাথে পার্শ্ব-প্রতিক্রিয়াযুক্ত কোনও ফাংশনে কল থাকে, এটি আপনার প্রোগ্রামের শব্দার্থক পরিবর্তন করতে পারে।
অ্যালগোম্যান

1
@ অ্যালগোম্যান ওহ নোস, চলমান সময়, কোড-গল্ফিং / গুলিগুলির সর্বাধিক গুরুত্বপূর্ণ অংশ। আপনি ফাংশন দুইবার চলমান এড়াতে চান তাহলে, শুধু পূর্বেই তাদের ভেরিয়েবল (যা আপনি সম্ভবত করছেন শেষ পর্যন্ত করতে যাচ্ছেন নির্ধারিত যাহাই হউক না কেন বাইট নেভিগেশন সংরক্ষণ)
জো রাজা

আমি একটি ট্রান্সপনার নিয়ে কাজ করছি - এটি একটি এক্সপ্রেশন পড়ে এবং এটি থেকে একটি অভিব্যক্তি উত্পন্ন করার কথা। মূল অভিব্যক্তিতে সেই সিএমপি গভীরভাবে বাসা বাঁধতে পারে। এটি প্রয়োগ করা খুব কুরুচিপূর্ণ এবং শক্ত (যদি অসম্ভব না হয়) হতে পারে, যদি আমি যদি এর মতো টার্গেট-কোড উত্পন্ন করি।
আলগোম্যান

1
তাই প্রতিস্থাপন @Algoman cmp(exp1,exp2)সঙ্গে (lambda a,b:(a>b)-(a<b))(exp1,exp2)
অ্যান্ডারস কাসের্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.