पायथन सूची की समझ (उदाहरणों के साथ)

इस लेख में, हम पायथन सूची समझ, और इसका उपयोग करने के तरीके के बारे में जानेंगे।

पायथन में लूप के लिए सूची समझ बनाम

मान लीजिए, हम शब्द के अक्षरों को अलग करना चाहते humanहैं और अक्षरों को एक सूची के आइटम के रूप में जोड़ना चाहते हैं। पहली चीज जो ध्यान में आती है वह लूप के लिए उपयोग की जाएगी।

उदाहरण 1: लूप का उपयोग करके स्ट्रिंग के माध्यम से इरेटिंग

 h_letters = () for letter in 'human': h_letters.append(letter) print(h_letters)

जब हम प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 ('मानव')

हालाँकि, सूची बोध का उपयोग करके पायथन के पास इस मुद्दे को हल करने का एक आसान तरीका है। सूची समझ मौजूदा सूची के आधार पर सूचियों को परिभाषित करने और बनाने का एक सुंदर तरीका है।

आइए देखें कि सूची की समझ का उपयोग करके उपरोक्त कार्यक्रम को कैसे लिखा जा सकता है।

उदाहरण 2: सूची समझ का उपयोग करके एक स्ट्रिंग के माध्यम से Iterating

 h_letters = ( letter for letter in 'human' ) print( h_letters)

जब हम प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 ('मानव')

उपरोक्त उदाहरण में, एक नई सूची चर h_letters को दी गई है, और सूची में पुनरावृत्त स्ट्रिंग 'मानव' के आइटम शामिल हैं। हम print()आउटपुट प्राप्त करने के लिए फ़ंक्शन कहते हैं ।

सूची समझ का सिंटैक्स

 (सूची में आइटम के लिए अभिव्यक्ति)

अब हम यह पहचान सकते हैं कि सूची बोध कहाँ उपयोग किया जाता है।

यदि आपने गौर किया है, humanएक स्ट्रिंग है, एक सूची नहीं है। यह सूची बोध की शक्ति है। यह पहचान कर सकता है कि कब यह एक तार या टुपल प्राप्त करता है और एक सूची की तरह इस पर काम करता है।

आप लूप का उपयोग कर सकते हैं। हालांकि, हर लूप को सूची समझ के रूप में दोबारा नहीं लिखा जा सकता है। लेकिन जैसा कि आप सीखते हैं और सूची समझ के साथ सहज हो जाते हैं, आप अपने आप को इस सुरुचिपूर्ण वाक्यविन्यास के साथ अधिक से अधिक छोरों की जगह पाएंगे।

सूची बोधक बनाम लाम्बा कार्य

सूचियों की सूची को काम करने का एकमात्र तरीका नहीं है। विभिन्न बिल्ट-इन फ़ंक्शन और लैम्ब्डा फ़ंक्शन कोड की कम लाइनों में सूची बना और संशोधित कर सकते हैं।

उदाहरण 3: सूची के अंदर लैम्ब्डा कार्यों का उपयोग करना

 letters = list(map(lambda x: x, 'human')) print(letters)

जब हम प्रोग्राम चलाते हैं, तो आउटपुट होगा

 ('मानव')

हालांकि, सूची की समझ आमतौर पर मेमने के कार्यों की तुलना में अधिक मानव पठनीय है। यह समझना आसान है कि प्रोग्रामर जब सूची बोध का उपयोग करने के लिए क्या करने की कोशिश कर रहा था।

सूची बोध में सशर्त

सूची की समझ मौजूदा सूची (या अन्य ट्यूपलों) को संशोधित करने के लिए सशर्त विवरण का उपयोग कर सकती है। हम सूची बनाएंगे जो गणितीय ऑपरेटरों, पूर्णांक और श्रेणी () का उपयोग करता है।

उदाहरण 4: सूची बोध के साथ यदि का उपयोग करना

 number_list = ( x for x in range(20) if x % 2 == 0) print(number_list)

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

 (0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

यदि आइटम का मान 2 से विभाज्य है, तो सूची, संख्या_सूची 0-19 की सीमा में आइटमों से आबाद होगी।

उदाहरण 5: सूची बोध के साथ नेस्टेड आईएफ

 num_list = (y for y in range(100) if y % 2 == 0 if y % 5 == 0) print(num_list)

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

 (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)

यहां, सूची समझने की जाँच करें:

  1. Y 2 से विभाज्य है या नहीं?
  2. Y 5 से विभाज्य है या नहीं?

यदि y दोनों स्थितियों को पूरा करता है, तो y को num_list में जोड़ा जाता है।

उदाहरण 6: यदि … सूची बोध के साथ और भी

 obj = ("Even" if i%2==0 else "Odd" for i in range(10)) print(obj)

जब हम उपरोक्त कार्यक्रम चलाते हैं, तो आउटपुट होगा:

 ('सम', 'विषम', 'सम', 'विषम', 'सम', 'विषम', 'सम', 'विषम', 'सम', 'विषम')

Here, list comprehension will check the 10 numbers from 0 to 9. If i is divisible by 2, then Even is appended to the obj list. If not, Odd is appended.

Nested Loops in List Comprehension

Suppose, we need to compute the transpose of a matrix that requires nested for loop. Let’s see how it is done using normal for loop first.

Example 7: Transpose of Matrix using Nested Loops

 transposed = () matrix = ((1, 2, 3, 4), (4, 5, 6, 8)) for i in range(len(matrix(0))): transposed_row = () for row in matrix: transposed_row.append(row(i)) transposed.append(transposed_row) print(transposed)

Output

 ((1, 4), (2, 5), (3, 6), (4, 8)) 

The above code use two for loops to find transpose of the matrix.

We can also perform nested iteration inside a list comprehension. In this section, we will find transpose of a matrix using nested loop inside list comprehension.

Example 8: Transpose of a Matrix using List Comprehension

 matrix = ((1, 2), (3,4), (5,6), (7,8)) transpose = ((row(i) for row in matrix) for i in range(2)) print (transpose)

When we run the above program, the output will be:

 ((1, 3, 5, 7), (2, 4, 6, 8))

In above program, we have a variable matrix which have 4 rows and 2 columns.We need to find transpose of the matrix. For that, we used list comprehension.

**Note: The nested loops in list comprehension don’t work like normal nested loops. In the above program, for i in range(2) is executed before row(i) for row in matrix. Hence at first, a value is assigned to i then item directed by row(i) is appended in the transpose variable.

Key Points to Remember

  • List comprehension is an elegant way to define and create lists based on existing lists.
  • List comprehension is generally more compact and faster than normal functions and loops for creating list.
  • However, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.
  • याद रखें, प्रत्येक सूची समझ को लूप के लिए फिर से लिखा जा सकता है, लेकिन लूप के लिए प्रत्येक को सूची बोध के रूप में दोबारा नहीं लिखा जा सकता है।

दिलचस्प लेख...