Skip to content

ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ (Set Comprehension)

ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ (Set Comprehension) ಎಂದರೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಇಟರೇಬಲ್‌ನಿಂದ (ಉದಾ: list, tuple) ಹೊಸ ಸೆಟ್ ಅನ್ನು ರಚಿಸಲು ಪೈಥಾನ್‌ನಲ್ಲಿರುವ ಒಂದು ಸಂಕ್ಷಿಪ್ತ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ವಿಧಾನ. ಇದು ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್‌ನಂತೆಯೇ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಆದರೆ ಇದು ಕರ್ಲಿ ಬ್ರೇಸ್‌ {} ಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಯಾವಾಗಲೂ ಅನನ್ಯ (unique) ಐಟಂಗಳನ್ನು ಹೊಂದಿರುವ ಸೆಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ.


ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ ಸಿಂಟ್ಯಾಕ್ಸ್

new_set = {expression for item in iterable if condition}
- expression: ಹೊಸ ಸೆಟ್‌ನ ಪ್ರತಿಯೊಂದು ಐಟಂ ಅನ್ನು ಹೇಗೆ ರಚಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವ ಎಕ್ಸ್‌ಪ್ರೆಶನ್. - item: ಇಟರೇಬಲ್‌ನಿಂದ ಬರುವ ಪ್ರತಿಯೊಂದು ಐಟಂ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ವೇರಿಯೇಬಲ್. - iterable: for ಲೂಪ್ ಚಲಿಸುವ ಸೀಕ್ವೆನ್ಸ್. - if condition: ಐಟಂ ಅನ್ನು ಹೊಸ ಸೆಟ್‌ಗೆ ಸೇರಿಸಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸುವ ಐಚ್ಛಿಕ ಷರತ್ತು.


ಉದಾಹರಣೆಗಳು

1. ಮೂಲಭೂತ ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್

ಒಂದು ಲಿಸ್ಟ್‌ನಿಂದ, ಪ್ರತಿಯೊಂದು ಸಂಖ್ಯೆಯ ವರ್ಗವನ್ನು (square) ಹೊಂದಿರುವ ಸೆಟ್ ಅನ್ನು ರಚಿಸೋಣ.

ಸಾಂಪ್ರದಾಯಿಕ ವಿಧಾನ (for ಲೂಪ್):

numbers = [1, 2, 3, 2, 1]
squares = set()
for num in numbers:
    squares.add(num * num)
print(squares) # Output: {1, 4, 9}

ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ ವಿಧಾನ:

numbers = [1, 2, 3, 2, 1]
squares = {num * num for num in numbers}
print(squares) # Output: {1, 4, 9} (ನಕಲುಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲ್ಪಡುತ್ತವೆ)

2. ಷರತ್ತಿನೊಂದಿಗೆ ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್

ಒಂದು ಲಿಸ್ಟ್‌ನಿಂದ 5ಕ್ಕಿಂತ ದೊಡ್ಡದಾದ ಅನನ್ಯ ಹೆಸರುಗಳನ್ನು ಹೊಂದಿರುವ ಸೆಟ್ ಅನ್ನು ರಚಿಸೋಣ.

names = ["ರವಿಕಿರಣ", "ನಿಶ್ಕಲಾ", "ಅನಿಲ್", "ಗೋವರ್ಧನ್", "ನಿಶ್ಕಲಾ"]
long_names = {name for name in names if len(name) > 5}
print(long_names) # Output: {'ಗೋವರ್ಧನ್', 'ರವಿಕಿರಣ', 'ನಿಶ್ಕಲಾ'}

3. if-else ನೊಂದಿಗೆ ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್

ಸಂಖ್ಯೆಗಳ ಲಿಸ್ಟ್‌ನಿಂದ, ಪ್ರತಿ ಸಂಖ್ಯೆಯು "ಸಮ" ಅಥವಾ "ಬೆಸ" ಎಂದು ಲೇಬಲ್ ಮಾಡಲಾದ ಸೆಟ್ ಅನ್ನು ರಚಿಸೋಣ.

numbers = [1, 2, 3, 4, 5]
labels = {"ಸಮ" if num % 2 == 0 else "ಬೆಸ" for num in numbers}
print(labels) # Output: {'ಬೆಸ', 'ಸಮ'}
ಇಲ್ಲಿ, ಫಲಿತಾಂಶದಲ್ಲಿ ಕೇವಲ ಎರಡು ಅನನ್ಯ ಮೌಲ್ಯಗಳು ಇರುವುದರಿಂದ, ಸೆಟ್‌ನಲ್ಲಿ {'ಬೆಸ', 'ಸಮ'} ಮಾತ್ರ ಇರುತ್ತದೆ.


ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ vs. ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್

ಗುಣಲಕ್ಷಣ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್
ಸಿಂಟ್ಯಾಕ್ಸ್ [...] (ಚೌಕ ಆವರಣ) {...} (ಕರ್ಲಿ ಬ್ರೇಸ್)
ಫಲಿತಾಂಶ ಲಿಸ್ಟ್ (List) ಸೆಟ್ (Set)
ನಕಲುಗಳು ಅನುಮತಿಸಲಾಗಿದೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ
ಕ್ರಮ ಕ್ರಮಬದ್ಧ (Ordered) ಕ್ರಮರಹಿತ (Unordered)

ಪ್ರಯೋಜನಗಳು

  • ಸಂಕ್ಷಿಪ್ತತೆ: ಕೋಡ್ ಅನ್ನು ಚಿಕ್ಕದಾಗಿಸುತ್ತದೆ.
  • ಓದಬಲ್ಲದು: ಸರಳವಾದ ಕಾಂಪ್ರಹೆನ್ಷನ್‌ಗಳು for ಲೂಪ್‌ಗಳಿಗಿಂತ ಹೆಚ್ಚು ಸ್ಪಷ್ಟವಾಗಿರುತ್ತವೆ.
  • ನಕಲುಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು: ಇಟರೇಬಲ್‌ನಿಂದ ಅನನ್ಯ ಐಟಂಗಳನ್ನು ಪಡೆಯಲು ಇದು ಅತ್ಯಂತ ಸುಲಭವಾದ ಮಾರ್ಗವಾಗಿದೆ.

ಸಂಕೀರ್ಣ ತರ್ಕಕ್ಕಾಗಿ ಸಾಂಪ್ರದಾಯಿಕ for ಲೂಪ್‌ಗಳು ಉತ್ತಮವಾಗಿದ್ದರೂ, ಡೇಟಾವನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ಮತ್ತು ಪರಿವರ್ತಿಸಲು ಸೆಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್‌ಗಳು ಅತ್ಯಂತ ಶಕ್ತಿಯುತ ಸಾಧನಗಳಾಗಿವೆ.