আমি কেন এটি বৈধ তা জানতে চাই:
set(range(10)) - set(range(5))
তবে এটি বৈধ নয়:
set(range(10)) + set(range(5))
এটি কি কারণ '+' এর অর্থ ছেদ এবং মিল উভয়ই হতে পারে?
আমি কেন এটি বৈধ তা জানতে চাই:
set(range(10)) - set(range(5))
তবে এটি বৈধ নয়:
set(range(10)) + set(range(5))
এটি কি কারণ '+' এর অর্থ ছেদ এবং মিল উভয়ই হতে পারে?
~
বাইনারি অপারেটর হয়ে থাকেন তবে আপনার |
কাছে + ইউনিয়ন এবং ~
পার্থক্যের জন্য থাকতে পারত , যা অনেক বেশি ভারসাম্যযুক্ত।
উত্তর:
পাইথন সেটগুলির +
অপারেটরের কোনও প্রয়োগকরণ নেই ।
আপনি |
সেট ইউনিয়ন এবং &
সেট ছেদ জন্য ব্যবহার করতে পারেন ।
সেটগুলি -
সেট পার্থক্য হিসাবে বাস্তবায়ন করে । আপনি ^
প্রতিসম সেট পার্থক্যের জন্যও ব্যবহার করতে পারেন (যেমন, এটি কেবলমাত্র একটি বস্তু যা একটি সেটে প্রদর্শিত হবে তবে উভয় সেটে উপস্থিত হবে না এমন একটি নতুন সেট ফেরত দেবে)।
পাইথন |
পরিবর্তে ব্যবহার করা বেছে নিল +
কারণ সেট ইউনিয়ন এমন একটি ধারণা যা বুলিয়ান বিভাজনের সাথে ঘনিষ্ঠভাবে সম্পর্কিত; বিট ভেক্টর (অজগরটিতে যা কেবল int
/ / long
) বুলিয়ান মানগুলির ক্রম জুড়ে এই ক্রিয়াকলাপটিকে সংজ্ঞায়িত করে এবং "বিটওয়াইস বা" বলে call প্রকৃতপক্ষে এই অপারেশনটি সেট ইউনিয়নের সাথে এতটাই সমান যে বাইনারি পূর্ণসংখ্যাকে কখনও কখনও "বিট সেট "ও বলা হয়, যেখানে সেটের উপাদানগুলি প্রাকৃতিক সংখ্যা হিসাবে নেওয়া হয়।
কারণ int
ইতিমধ্যে সংজ্ঞায়িত হিসাবে অপারেটার সেট মত |
, &
এবং ^
, এটা প্রাকৃতিক ছিল নতুন জন্য set
টাইপ একই ইন্টারফেস ব্যবহার করতে।
সেট তত্ত্বে + চিহ্নটি সাধারণত দুটি সেটের বিচ্ছিন্ন ইউনিয়নকে নির্দেশ করে । যদি এ এবং বি সেট হয়, তবে তাদের বিভেদ ইউনিয়ন সেট হিসাবে সংজ্ঞায়িত করা হয়েছে
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)।
সুতরাং, যেহেতু একটি সেট অপারেশন হিসাবে '+' চিহ্নটির যথেষ্ট সু-প্রতিষ্ঠিত অর্থ রয়েছে, আমি এটি খুব সুসংগত পাই যে পাইথন এই চিহ্নটি সেট ইউনিয়ন বা ছেদ করার জন্য ব্যবহার করে না। সম্ভবত তারা যখন অপারেটরগুলি বেছে নিয়েছিল তখন পাইথন ডিজাইনারদের মনে এটি ছিল।
|
সেট ইউনিয়নগুলির জন্য অপারেটরটিকে অতিরিক্ত চাপ দিয়েছি কিন্তু কেন গুডো সেট ইউনিয়নগুলির জন্য অপারেটরকে ওভারলোডিং এড়াতে অস্বীকার করতে ব্যর্থ হয়েছিল +
। সর্বোপরি, এটি করা +
অপারেটরের সাথে তালিকা সংযোজনের জন্য ওভারলোডডের সাথে অরথোগোনালিটি সংরক্ষণ করে । যেহেতু পাইথনের হলমার্কটি গাণিতিক স্বরলিপি (যেমন, j
জটিল সংখ্যার জটিল উপাদানকে বোঝানো) সাথে সামঞ্জস্যপূর্ণ, তাই গিডোর কৌতূহল পছন্দটি অবশেষে বোধগম্য হয়।
অবশ্যই, তারা +
একটি ইউনিয়ন করতে পারত , তবে তার পরেও ছেদ করার জন্য একটি চিহ্ন প্রয়োজন হবে। |
ইউনিয়নের &
জন্য ছেদ জন্য সমান্তরাল এবং এইভাবে একটি ভাল পছন্দ করে তোলে।
কারণ |
ইউনিয়ন এবং &
অর্থ ছেদ করার অর্থ। একই ফাংশনের জন্য একাধিক অপারেটর যুক্ত করার স্পষ্ট কোন কারণ নেই।
ব্যবহারের কারণ |
এবং &
সম্ভবত বিটওয়াইজ অপারেশনগুলিতে ফিরে যায়। আপনি যদি কোনও সংখ্যার বিট হিসাবে কোনও সেট উপস্থাপন করেন তবে সেগুলি অপারেটর আপনি ইউনিয়ন করতে এবং ছেদ করতে ব্যবহার করবেন।
+
সাধারণ হিসাবে ইউনিয়ন বাঁধা এবং -
পার্থক্য সেট করা হয়।
কারণ সেট পার্থক্য একটি খুব দরকারী এবং সাধারণত পরিচিত ধারণা, তবে "সেট সংযোজন" এর কোনও (সর্বজনীনভাবে ব্যবহৃত) ধারণা নেই।
+
হিসাবে সংজ্ঞায়িত করা হয় । কেউ কেউ এটি প্রতিসাম্যগত পার্থক্যের জন্য ব্যবহার করেন । যেভাবেই হোক না কেন, যে কোনও কাগজ এটি ব্যবহার করে তাকে একে অন্য কিছু বলে বা এটি প্রথমে সংজ্ঞায়িত করে।
|
মানে ইউনিয়ন। তুমি কি জিজ্ঞাসা করছ?