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