গণিতে, সেট এবং অর্ডার করা সেট (ওসেটস) রয়েছে।
- সেট : অনন্য উপাদানগুলির একটি আনর্ডার্ড পাত্রে (কার্যকর)
- ওসেট : অনন্য উপাদানগুলির একটি অর্ডারযুক্ত ধারক (নয় বাস্তবায়নযোগ্য)
পাইথনে, কেবল সেটগুলি সরাসরি প্রয়োগ করা হয়। আমরা নিয়মিত ডিক কী ( 3.7+ ) দিয়ে ওসেটগুলি অনুকরণ করতে পারি ।
প্রদত্ত
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
কোড
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
ডেমো
প্রতিলিপিগুলি সরানো হয়, সন্নিবেশ-ক্রম সংরক্ষণ করা হয়।
list(oset)
# [1, 2, 20, 6, 210]
ডিক কীগুলিতে সেট-এর মতো ক্রিয়াকলাপ।
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
বিস্তারিত
দ্রষ্টব্য: একটি অর্ডারযুক্ত কাঠামো আদেশকৃত উপাদানগুলিকে বাদ দেয় না। বরং রক্ষণাবেক্ষণ আদেশের নিশ্চয়তা নেই not উদাহরণ:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
কেউ আবিষ্কার করে সন্তুষ্ট হতে পারে যে একটি তালিকা এবং মাল্টিসেট (এমসেট) আরও দুটি আকর্ষণীয়, গাণিতিক ডেটা কাঠামো:
- তালিকা : উপাদানগুলির একটি আদেশযুক্ত ধারক যা প্রতিলিপিগুলিকে অনুমতি দেয় (কার্যকর)
- এমসেট : উপাদানগুলির একটি আনর্ডারড ধারক যা প্রতিলিপিগুলিকে অনুমতি দেয় (NotImplemented) *
সারসংক্ষেপ
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* একটি বহুলিপি অপ্রত্যক্ষভাবে অনুকরণ করা যেতে পারে collections.Counter()
, ডিকের মতো বহুসংখ্যার ম্যাপিং (গণনা)।