পাইথন সেটগুলি কেন '+' বোঝা যায় না?


90

আমি কেন এটি বৈধ তা জানতে চাই:

set(range(10)) - set(range(5))

তবে এটি বৈধ নয়:

set(range(10)) + set(range(5))

এটি কি কারণ '+' এর অর্থ ছেদ এবং মিল উভয়ই হতে পারে?


4
|মানে ইউনিয়ন। তুমি কি জিজ্ঞাসা করছ?
এস.লট

13
এটি কারণ গুইডো চৌরাস্তা এবং ইউনিয়নের জন্য বিভিন্ন অপারেটর বেছে নিয়েছিল।
ডেভিড হেফারনান

4
@ ডেভিড হেফারনান, গিডো সাধারণত কারণ ছাড়াই বা কমপক্ষে কিছু গাইড নীতি ছাড়া কাজ করে না - এটাই পাইথনকে দুর্দান্ত করে তোলে।
মার্ক রান্সম

4
@ মারক ওহ, আমি নিশ্চিত যে তিনি এটি একটি ভাল কারণে করেছেন।
ডেভিড হেফারনান

4
যদি কেবলমাত্র ~বাইনারি অপারেটর হয়ে থাকেন তবে আপনার |কাছে + ইউনিয়ন এবং ~পার্থক্যের জন্য থাকতে পারত , যা অনেক বেশি ভারসাম্যযুক্ত।
ম্যাট যোগদানকারী

উত্তর:


109

পাইথন সেটগুলির +অপারেটরের কোনও প্রয়োগকরণ নেই ।

আপনি |সেট ইউনিয়ন এবং &সেট ছেদ জন্য ব্যবহার করতে পারেন ।

সেটগুলি -সেট পার্থক্য হিসাবে বাস্তবায়ন করে । আপনি ^প্রতিসম সেট পার্থক্যের জন্যও ব্যবহার করতে পারেন (যেমন, এটি কেবলমাত্র একটি বস্তু যা একটি সেটে প্রদর্শিত হবে তবে উভয় সেটে উপস্থিত হবে না এমন একটি নতুন সেট ফেরত দেবে)।


4
ধন্যবাদ আমি সম্পর্কে জানতাম না | এবং &.
বদজিল

99

পাইথন |পরিবর্তে ব্যবহার করা বেছে নিল +কারণ সেট ইউনিয়ন এমন একটি ধারণা যা বুলিয়ান বিভাজনের সাথে ঘনিষ্ঠভাবে সম্পর্কিত; বিট ভেক্টর (অজগরটিতে যা কেবল int/ / long) বুলিয়ান মানগুলির ক্রম জুড়ে এই ক্রিয়াকলাপটিকে সংজ্ঞায়িত করে এবং "বিটওয়াইস বা" বলে call প্রকৃতপক্ষে এই অপারেশনটি সেট ইউনিয়নের সাথে এতটাই সমান যে বাইনারি পূর্ণসংখ্যাকে কখনও কখনও "বিট সেট "ও বলা হয়, যেখানে সেটের উপাদানগুলি প্রাকৃতিক সংখ্যা হিসাবে নেওয়া হয়।

কারণ intইতিমধ্যে সংজ্ঞায়িত হিসাবে অপারেটার সেট মত |, &এবং ^, এটা প্রাকৃতিক ছিল নতুন জন্য setটাইপ একই ইন্টারফেস ব্যবহার করতে।


7
আমি মনে করি এই উত্তরটি প্রশ্নের মধ্যে "কেন" ভাল করে।
গ্রেগ হেন্ডারশট

4
সম্ভবত। কেন +1। যদিও এক অর্থে, কমপক্ষে প্রশ্ন জিজ্ঞাসক কেবল ইউনিয়ন এবং ছেদটি কীভাবে করবেন তা জেনে সন্তুষ্ট বলে মনে হয়েছিল।
প্ল্যাটিনাম আউজুর

4
@ প্ল্যাটিনাম: আমি আসলে জিজ্ঞাসিত প্রশ্নের উত্তর দিতে চাই, সুতরাং যখন অন্য কেউ যখন আসে তখন যার কাছে এই প্রশ্নটি রয়েছে সমস্ত যুক্তিসঙ্গত উত্তর দেখতে পারে; এমনকি যিনি মূল প্রশ্নটি জিজ্ঞাসা করেছেন তিনি যদি এগিয়ে যান তবে। আমাদের দুজনের মধ্যে, আমরা এটির উত্তম উত্তর দেব।
সিঙ্গেলাইজেশন ইলিমিনেশন

4
@ টোকেনম্যাকগুয়ে: "পাইথন কেবল অপারেটরটিকে সংজ্ঞায়িত করেনি" কারণগুলিরও জবাব দেয়। :
প্ল্যাটিনাম আজুর

15
আমি নিশ্চিত না যে এটি করে; "কারণ এটি নীল" "আকাশ নীল কেন?"
সিঙ্গেলাইজেশন ইলিমিনেশন

36

সেট তত্ত্বে + চিহ্নটি সাধারণত দুটি সেটের বিচ্ছিন্ন ইউনিয়নকে নির্দেশ করে । যদি এ এবং বি সেট হয়, তবে তাদের বিভেদ ইউনিয়ন সেট হিসাবে সংজ্ঞায়িত করা হয়েছে

A + B = {(a, 1) | a in A} U {(b, 2) | b in B}

অর্থাত্, বিচ্ছিন্ন ইউনিয়নটি তৈরি করার জন্য, আমরা এ এর ​​সমস্ত উপাদান এবং বি এর সমস্ত উপাদানকে বিভিন্ন ট্যাগ দিয়ে চিহ্নিত করি (উদাহরণস্বরূপ আমি 1 এবং 2 নম্বর ব্যবহার করেছি, তবে দুটি ভিন্ন "জিনিস" কাজটি করবে) এবং তারপরে গ্রহণ করুন দুটি ফলাফল সেট ইউনিয়ন। উপরের উদাহরণে আমি সেট ইউনিয়নের জন্য 'ইউ' ব্যবহার করেছি এটি স্বাভাবিক গাণিতিক স্বরলিপিটির সাথে আরও সাদৃশ্যপূর্ণ করতে; নীচে আমি পাইথন স্বরলিপি ব্যবহার করি, অর্থাৎ '|' ইউনিয়নের জন্য, এবং ছেদ করার জন্য 'এবং'।

যদি এ এবং বি মতবিরোধ হয় তবে এ + বি এর A এর সাথে 1-থেকে -1 চিঠিপত্র রয়েছে বি। যদি সেগুলি না হয় তবে A এবং B এর সমস্ত সাধারণ উপাদানগুলি A + B এ দুবার উপস্থিত হয়: একবার হিসাবে (x, 1), এবং একবার হিসাবে (x, 2)।

সুতরাং, যেহেতু একটি সেট অপারেশন হিসাবে '+' চিহ্নটির যথেষ্ট সু-প্রতিষ্ঠিত অর্থ রয়েছে, আমি এটি খুব সুসংগত পাই যে পাইথন এই চিহ্নটি সেট ইউনিয়ন বা ছেদ করার জন্য ব্যবহার করে না। সম্ভবত তারা যখন অপারেটরগুলি বেছে নিয়েছিল তখন পাইথন ডিজাইনারদের মনে এটি ছিল।


4
এটি সর্বোত্তম উত্তর। এই প্রতিক্রিয়াটি পড়ার আগে পর্যন্ত, আমি গুডো কেন |সেট ইউনিয়নগুলির জন্য অপারেটরটিকে অতিরিক্ত চাপ দিয়েছি কিন্তু কেন গুডো সেট ইউনিয়নগুলির জন্য অপারেটরকে ওভারলোডিং এড়াতে অস্বীকার করতে ব্যর্থ হয়েছিল +। সর্বোপরি, এটি করা +অপারেটরের সাথে তালিকা সংযোজনের জন্য ওভারলোডডের সাথে অরথোগোনালিটি সংরক্ষণ করে । যেহেতু পাইথনের হলমার্কটি গাণিতিক স্বরলিপি (যেমন, jজটিল সংখ্যার জটিল উপাদানকে বোঝানো) সাথে সামঞ্জস্যপূর্ণ, তাই গিডোর কৌতূহল পছন্দটি অবশেষে বোধগম্য হয়।
সিসিল কারি

23

অবশ্যই, তারা +একটি ইউনিয়ন করতে পারত , তবে তার পরেও ছেদ করার জন্য একটি চিহ্ন প্রয়োজন হবে। |ইউনিয়নের &জন্য ছেদ জন্য সমান্তরাল এবং এইভাবে একটি ভাল পছন্দ করে তোলে।


10

কারণ |ইউনিয়ন এবং &অর্থ ছেদ করার অর্থ। একই ফাংশনের জন্য একাধিক অপারেটর যুক্ত করার স্পষ্ট কোন কারণ নেই।

ব্যবহারের কারণ |এবং &সম্ভবত বিটওয়াইজ অপারেশনগুলিতে ফিরে যায়। আপনি যদি কোনও সংখ্যার বিট হিসাবে কোনও সেট উপস্থাপন করেন তবে সেগুলি অপারেটর আপনি ইউনিয়ন করতে এবং ছেদ করতে ব্যবহার করবেন।

+সাধারণ হিসাবে ইউনিয়ন বাঁধা এবং -পার্থক্য সেট করা হয়।


3

কারণ সেট পার্থক্য একটি খুব দরকারী এবং সাধারণত পরিচিত ধারণা, তবে "সেট সংযোজন" এর কোনও (সর্বজনীনভাবে ব্যবহৃত) ধারণা নেই।


4
মিলন? আপনি শেষবার কখন শুনলেন যে কেউ "ইউনিয়ন" এর পরিবর্তে "সেট" যুক্ত করুন বা of এর পরিবর্তে + ব্যবহার করবেন? কখনও কখনও সদস্য-ভিত্তিক সংযোজন+ হিসাবে সংজ্ঞায়িত করা হয় । কেউ কেউ এটি প্রতিসাম্যগত পার্থক্যের জন্য ব্যবহার করেন । যেভাবেই হোক না কেন, যে কোনও কাগজ এটি ব্যবহার করে তাকে একে অন্য কিছু বলে বা এটি প্রথমে সংজ্ঞায়িত করে।
পেটর ভিক্টরিন

4
কেউ যথাযথ শব্দটি না জানলে এটিকে 'সেট সংযোজন' হিসাবে উল্লেখ করতে পারে। স্পষ্টতই যারা 'ইউনিয়ন' শব্দটি জানেন তারা 'ইউনিয়ন' শব্দটি ব্যবহার করেন।
ফ্লাফি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.