মূল কন্টেন্টে যান
মডিউল 3 · 4-এর পাঠ 4কোর্সে 12/36~10 min
মডিউল পাঠ (4/4)

সেট

একটি সেট হল অনন্য, ক্রমহীন উপাদানের একটি সংগ্রহ। তিনটি পরাশক্তি:

  1. অটোমেটিক ডিডপ্লিকেশন: একই উপাদান দুবার যোগ করলে কোনো প্রভাব নেই।
  2. O(1) সদস্যপদ পরীক্ষা: x in s এমনকি লক্ষাধিক লোকের মধ্যেও অত্যন্ত দ্রুত উপাদানগুলির (এটি হ্যাশ-ভিত্তিক, নির্দেশের মতো)।
  3. সেট অপারেশন: ইউনিয়ন, ছেদ, পার্থক্য, প্রতিসম পার্থক্য।

একটি সেট তৈরি করা হচ্ছে

Python
vuoto = set()           # ATTENZIONE: {} è un dict vuoto, non un set!
numeri = {1, 2, 3}
da_lista = set([1, 1, 2, 3, 3, 3])   # {1, 2, 3}

একা ব্রেসিস {} একটি খালি অভিধান তৈরি করুন, একটি সেট নয়: একটি খালি সেটের জন্য আপনার প্রয়োজন set()

একটি সেট পরিবর্তন করা হচ্ছে

Python
s = {1, 2, 3}
s.add(4)         # {1, 2, 3, 4}
s.add(1)         # nessun effetto (già presente)
s.discard(99)    # rimuove se presente, silenzioso altrimenti
s.remove(2)      # rimuove o solleva KeyError

অপারেশন সেট করুন

Python
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

a | b    # {1, 2, 3, 4, 5, 6}     unione
a & b    # {3, 4}                  intersezione
a - b    # {1, 2}                  differenza (in a ma non in b)
a ^ b    # {1, 2, 5, 6}            differenza simmetrica (xor)

এছাড়াও পদ্ধতির ফর্ম রয়েছে (a.union(b), a.intersection(b), …) যার মধ্যে উপরন্তু যেকোন পুনরাবৃত্তিযোগ্য গ্রহণ করুন, শুধুমাত্র সেট নয়।

সদস্যপদ পরীক্ষা

Python
parole = {"ciao", "mondo", "python"}
"ciao" in parole       # True   O(1)
"java" not in parole   # True

তুলনার জন্য: একটি list এর ভিতরে in দিয়ে অনুসন্ধান করা হল O(n) এবং দীর্ঘ এটা অনেক ধীর তালিকা.

হিমায়িত সেট: অপরিবর্তনীয় সংস্করণ

frozenset({1, 2, 3}) হল হ্যাশেবল সংস্করণ: এটি একটি dict কী বা একটি হতে পারে অন্য সেটের উপাদান।

অপারেশন এবং কর্মক্ষমতা সেট করুন

সেটগুলিকে হ্যাশ টেবিল হিসাবে প্রয়োগ করা হয়, যা সদস্যতা পরীক্ষাকে (x in my_set) অত্যন্ত দ্রুত করে তোলে: এটি ধ্রুবক সময়ের মধ্যে চলে O(1), তালিকার বিপরীতে যেখানে অনুসন্ধানে লিনিয়ার সময় লাগে O(n)৷ উপরন্তু, তারা ইউনিয়ন (|), ছেদ (&), এবং পার্থক্য (-) এর মত বীজগণিতিক ক্রিয়াকলাপ সমর্থন করে।

চেষ্টা করে দেখুন

ব্যায়াম#python.m3.l4.e1
প্রচেষ্টা: 0লোড হচ্ছে...

'সংখ্যা = [1, 2, 2, 3, 3, 3, 4]' তালিকা দেওয়া, অনন্য মান (যেকোন ক্রমে) দিয়ে `অনন্য_আইটেম` তৈরি করুন এবং তারপর লেন (অনন্য_আইটেম) হিসাবে `গণনা` গণনা করুন। 'গণনা' মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

সেট(সংখ্যা) সদৃশগুলি সরিয়ে দেয়।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#python.m3.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...

প্রদত্ত `a = {1, 2, 3, 4}` এবং `b = {3, 4, 5, 6}`, ছেদটিকে `সাধারণ_আইটেম` এবং পার্থক্য a-bকে `only_a`-তে গণনা করুন। টিপল মূল্যায়ন করুন `(সাধারণ_আইটেম, শুধুমাত্র_একটি)'।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

& ছেদ, - পার্থক্য।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অতিরিক্ত চ্যালেঞ্জ

ব্যায়াম#python.m3.l4.e3
প্রচেষ্টা: 0লোড হচ্ছে...

Given two sets `set_a = {1, 2, 3}` and `set_b = {2, 3, 4}`, calculate the mathematical intersection of the two sets (their common elements). Store the resulting set in `common_elements` and evaluate it.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

আপনি & অপারেটর বা set_a.intersection(set_b) পদ্ধতি ব্যবহার করতে পারেন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ