মানগুলির একটি সেট বাছাই করা [বন্ধ]


112

আমার এই জাতীয় মান আছে:

set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
set(['4.918859000', '0.060758000', '4.917336999', '0.003949999', '0.013945000', '10.281522000', '0.025082999'])  

আমি প্রতিটি setক্রম বর্ধমান ক্রম অনুসারে বাছাই করতে চাই । আমি সেটগুলির মধ্যে বাছাই করতে চাই না, তবে প্রতিটি সেটের মানগুলি।


3
টিপলগুলি সমস্যার সাথে কী সম্পর্কযুক্ত এবং আপনি কী চেষ্টা করেছেন?
ফ্রেড ফু

3
পাইথন সেটগুলিতে অর্ডার দেওয়ার ধারণা আছে বলে আমি মনে করি না। এই আপনি সাহায্য করতে পারে stackoverflow.com/questions/1653970/...
zallarak

3
একটি সেট নিরলস। এটি এর অন্যতম বৈশিষ্ট্য। প্রতিটি ভাষায়। ব্যবহার ক list
করলি হরভাথ

4
@ করলি হরভথ "একটি সেট অর্ডারহীন that's এটি এর অন্যতম বৈশিষ্ট্য every প্রতিটি ভাষায়" " সি ++ এর std::setঅর্ডার দেওয়া হয়।
টিমোথি শিল্ডস 21

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

উত্তর:


218

একটি মন্তব্য থেকে:

আমি প্রতিটি সেট বাছাই করতে চাই।

এটা সহজ. যে কোনও সেট s(বা অন্য যেকোন কিছুতে পুনরাবৃত্তিযোগ্য) জন্য, সাজানো ক্রমের sorted(s)উপাদানগুলির একটি তালিকা প্রদান করে s:

>>> s = set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
>>> sorted(s)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '10.277200999', '4.918560000']

নোট যে sortedআপনাকে একটি দিচ্ছে list, একটি নয় set। এর কারণ এটি একটি অঙ্কের পুরো বিন্দু, উভয়ই গণিতে এবং প্রায় প্রতিটি প্রোগ্রামিং ভাষায় , * এটি অর্ডার করা হয় না: সেটগুলি {1, 2}এবং {2, 1}একই সেট।


আপনি সম্ভবত এই উপাদানগুলিকে স্ট্রিং হিসাবে বাছাই করতে চান না, তবে সংখ্যা হিসাবে (সুতরাং 4.918560000 পরে আসার পরিবর্তে 10.277200999 এর আগে আসবে)।

সেরা সমাধানটি সম্ভবত প্রথম স্থানে স্ট্রিংয়ের পরিবর্তে সংখ্যা হিসাবে সংখ্যা সঞ্চয় করে। তবে তা না হলে আপনাকে কেবল একটি keyফাংশন ব্যবহার করতে হবে :

>>> sorted(s, key=float)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '4.918560000', '10.277200999']

আরও তথ্যের জন্য, সরকারী দস্তাবেজগুলিতে বাছাই করা হাওটো দেখুন ।


* ব্যতিক্রমগুলির জন্য মন্তব্যগুলি দেখুন।


1
@ টিমোথিশিল্ডস: আপনি ঠিক বলেছেন, আমার উচিত ছিল "প্রতিটি প্রোগ্রামিং ভাষা যা সাধারণ শব্দের অপব্যবহার করতে পছন্দ করে না"। এমন একটি ভাষায় যেখানে "অ-সংশোধনকারী" এর অর্থ "মিউটেশন", এটি অবাক হওয়ার মতো নয় যার setঅর্থ "বাছাই করা তালিকা", এবং আপনাকে unordered_set"সেট" বলতে বোঝাতে হবে…
অ্যাবারনার্ট

2
নামটি ভাল বা খারাপ তা আলোচনার জন্য নয়। "সেট কখনই কোনও ভাষায় অর্ডার করা হয় না" এই উক্তিটি মিথ্যা।
টিমোথি শিল্ডস

5
গাণিতিক সেট সম্পর্কে আপনি উইকিপিডিয়া পৃষ্ঠায় "অর্ডারড" শব্দটি পাবেন না। আপনি "অর্ডার" শব্দটিও খুঁজে পাবেন না। কারণ এটি সেটগুলিতে গাণিতিক ক্রিয়াকলাপের সাথে অপ্রাসঙ্গিক । নির্দিষ্ট ভাষা অর্ডার করা সেটগুলি চয়ন করে কিনা তা বাস্তবায়ন বিশদ। en.wikedia.org/wiki/Set_(mathematics)
তীমথিয় শিল্ডস

3
@ টিমোথিশিল্ডস: ইতিমধ্যে, আপনি যে সংযুক্ত সেট (গণিত) এর উইকিপিডিয়া পৃষ্ঠায় "আনর্ডারড" শব্দটি ব্যবহার করেননি কারণ এটি সংজ্ঞা থেকে ইতিমধ্যে সুস্পষ্ট। বিশেষত, "সেট এ এবং বি সমান এবং যদি কেবলমাত্র তাদের নির্দিষ্ট উপাদান একই থাকে"। আদেশযুক্ত সংগ্রহের ক্ষেত্রে এটি সত্য নয়। (এর মতো বাক্যও রয়েছে: "সেট বা মাল্টিসেটের উপাদানগুলির তালিকা অনুসারে যে ক্রম রয়েছে তা অপ্রাসঙ্গিক", সুতরাং আপনি যদি কিছুটা অন্যরকম অনুসন্ধান করেন তবে ধারণাটি না
বুঝেও

3
@TimothyShields কিন্তু std::set নেই ক্রম এক্সপোজ (শুধুমাত্র API এর মাধ্যমে প্রয়োগ সুস্পষ্ট উপায়ে; ক্রম ফাংশন আসলে টাইপ অংশ কোনো সেট)। সত্য যে উপাদানগুলি সর্বদা কঠোর দুর্বল আদেশ অনুসারে বাছাই করা হয় তা ধারণার খুব সংজ্ঞার অংশ। সুতরাং, আপনার যুক্তি গতিবিধি হয়। তবে তা না থাকলে কেন ব্যাপার হবে? সেটগুলি প্রায় প্রতিটি প্রোগ্রামিং ভাষায় যেমন অংকিত হয় ঠিক তেমনই তারা গণিতে থাকে। একটি অন্তর্নিহিত ভাষা আছে যা এই শব্দটি অন্য কিছু বোঝার জন্য ব্যবহার করে যে বিবৃতিটি কোনও কম সত্য করে না।
অবতারিত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.