Skip to content

ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ (List Comprehension)

ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ (List Comprehension) ಎಂದರೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಲಿಸ್ಟ್ (ಅಥವಾ ಯಾವುದೇ ಇಟರೇಬಲ್) ನಿಂದ ಹೊಸ ಲಿಸ್ಟ್ ಅನ್ನು ರಚಿಸಲು ಪೈಥಾನ್‌ನಲ್ಲಿರುವ ಒಂದು ಸಂಕ್ಷಿಪ್ತ ಮತ್ತು ಸೊಗಸಾದ ವಿಧಾನ. ಇದು for ಲೂಪ್, if ಷರತ್ತು, ಮತ್ತು ಎಕ್ಸ್‌ಪ್ರೆಶನ್ ಅನ್ನು ಒಂದೇ ಸಾಲಿನಲ್ಲಿ ಸಂಯೋಜಿಸುತ್ತದೆ.

ಸಾಂಪ್ರದಾಯಿಕ for ಲೂಪ್‌ಗಳಿಗಿಂತ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚು ಓದಬಲ್ಲವು ಮತ್ತು ಕೆಲವೊಮ್ಮೆ ವೇಗವಾಗಿರುತ್ತವೆ.


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

new_list = [expression for item in iterable if condition]
- expression: ಹೊಸ ಲಿಸ್ಟ್‌ನ ಪ್ರತಿಯೊಂದು ಐಟಂ ಅನ್ನು ಹೇಗೆ ರಚಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವ ಎಕ್ಸ್‌ಪ್ರೆಶನ್. - item: ಇಟರೇಬಲ್‌ನಿಂದ ಬರುವ ಪ್ರತಿಯೊಂದು ಐಟಂ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವ ವೇರಿಯೇಬಲ್. - iterable: for ಲೂಪ್ ಚಲಿಸುವ ಸೀಕ್ವೆನ್ಸ್ (ಉದಾ: list, tuple, range). - if condition: ಐಟಂ ಅನ್ನು ಹೊಸ ಲಿಸ್ಟ್‌ಗೆ ಸೇರಿಸಬೇಕೇ ಎಂದು ನಿರ್ಧರಿಸುವ ಐಚ್ಛಿಕ (optional) ಷರತ್ತು.


ಉದಾಹರಣೆಗಳು

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

1 ರಿಂದ 5 ರವರೆಗಿನ ಸಂಖ್ಯೆಗಳ ವರ್ಗಗಳ (squares) ಪಟ್ಟಿಯನ್ನು ರಚಿಸೋಣ.

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

squares = []
for i in range(1, 6):
    squares.append(i * i)
print(squares) # Output: [1, 4, 9, 16, 25]

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

squares = [i * i for i in range(1, 6)]
print(squares) # Output: [1, 4, 9, 16, 25]

2. ಷರತ್ತಿನೊಂದಿಗೆ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ (Conditional Logic)

1 ರಿಂದ 10 ರವರೆಗಿನ ಸಮ ಸಂಖ್ಯೆಗಳ (even numbers) ವರ್ಗಗಳ ಪಟ್ಟಿಯನ್ನು ರಚಿಸೋಣ.

even_squares = [i * i for i in range(1, 11) if i % 2 == 0]
print(even_squares) # Output: [4, 16, 36, 64, 100]

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

if-else ಷರತ್ತನ್ನು ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ನ ಭಾಗವಾಗಿ ಬಳಸಬಹುದು.

ಸಿಂಟ್ಯಾಕ್ಸ್: [expression_if_true if condition else expression_if_false for item in iterable]

# ಸಂಖ್ಯೆಯು ಸಮವಾಗಿದ್ದರೆ 'Even', ಇಲ್ಲದಿದ್ದರೆ 'Odd' ಎಂದು ಲೇಬಲ್ ಮಾಡಿ
labels = ["Even" if i % 2 == 0 else "Odd" for i in range(1, 6)]
print(labels) # Output: ['Odd', 'Even', 'Odd', 'Even', 'Odd']

4. ಸ್ಟ್ರಿಂಗ್‌ಗಳ ಮೇಲೆ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್

ಹೆಸರುಗಳ ಪಟ್ಟಿಯಿಂದ, ಪ್ರತಿಯೊಂದು ಹೆಸರನ್ನು ದೊಡ್ಡಕ್ಷರಕ್ಕೆ (uppercase) ಪರಿವರ್ತಿಸೋಣ.

names = ["ರವಿಕಿರಣ", "ನಿಶ್ಕಲಾ", "ಗೋವರ್ಧನ್"]
upper_names = [name.upper() for name in names]
print(upper_names) # Output: ['ರವಿಕಿರ', 'ನಿಶ್ಕಲಾ', 'ಗೋವರ್ಧನ್']

5. ನೆಸ್ಟೆಡ್ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್ (Nested List Comprehension)

ನೆಸ್ಟೆಡ್ for ಲೂಪ್‌ಗಳನ್ನು ಸಹ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್‌ನಲ್ಲಿ ಬಳಸಬಹುದು.

# ಎರಡು ಲಿಸ್ಟ್‌ಗಳ ಸಂಯೋಜನೆಗಳನ್ನು ರಚಿಸುವುದು
combinations = [(x, y) for x in [1, 2] for y in ['a', 'b']]
print(combinations) # Output: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]

ಪ್ರಯೋಜನಗಳು

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

ಗಮನಿಸಿ: ಅತಿಯಾದ ಸಂಕೀರ್ಣ ಲಿಸ್ಟ್ ಕಾಂಪ್ರಹೆನ್ಷನ್‌ಗಳು ಕೋಡ್ ಅನ್ನು ಓದಲು ಕಷ್ಟಕರವಾಗಿಸಬಹುದು. ಅಂತಹ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಸಾಂಪ್ರದಾಯಿಕ for ಲೂಪ್ ಬಳಸುವುದು ಉತ್ತಮ.