मुख्य सामग्री पर जाएँ

Python में For Loops ट्यूटोरियल

किसी sequence पर या pandas dataframe की पंक्तियों और कॉलम्स पर iterate करने के लिए Python में For Loops को कैसे लागू करें, सीखें।
· 5 मि॰ पढ़ें

AI के साथ खोजें

परिचय

अन्य प्रोग्रामिंग भाषाओं की तरह, Python में for लूप थोड़े अलग होते हैं, क्योंकि वे एक iterator की तरह काम करते हैं और पारंपरिक for कीवर्ड जैसे कम। Python में C जैसी सिंटैक्स for(i=0; i<n; i++) नहीं है, बल्कि आप for in n का इस्तेमाल करते हैं।

इन्हें list, string, tuple, set, array, data frame जैसी sequence पर iterate करने के लिए उपयोग किया जा सकता है।

किसी सूची (list) के तत्वों के दिए गए सेट पर, for लूप का इस्तेमाल उस सूची के हर आइटम पर iterate करके उसे निष्पादित करने के लिए किया जा सकता है।

आइटम्स की एक श्रृंखला पर iterate करने के लिए For लूप range फ़ंक्शन का उपयोग करते हैं। range फ़ंक्शन, sequence की लंबाई के आधार पर, दिए गए दायरे के नंबरों वाली एक नई सूची लौटाता है।

किसी sequence पर iterate करते समय आप उसके तत्वों के index का भी उपयोग कर सकते हैं, लेकिन कुंजी यह है कि पहले सूची की लंबाई निकालें और फिर उसी लंबाई की सीमा के भीतर श्रृंखला पर iterate करें।

Python में for लूप zero-indexed होते हैं।

आइए जल्दी से इसके implementation भाग पर चलते हैं।

आप एक त्वरित ट्यूटोरियल के लिए यह वीडियो भी देख सकते हैं!

लूप्स का कार्यान्वयन

शुरू करने के लिए, 1-10 तक के नंबर प्रिंट करते हैं। क्योंकि Python में for लूप zero-indexed होते हैं, आपको हर iteration में एक जोड़ना होगा; नहीं तो आउटपुट 0-9 आएगा।

for i in range(10):
    print (i+1)

# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

आइए Datacamp शब्द के string पर for लूप से iterate करें और केवल अक्षर a प्रिंट करें।

for i in "Datacamp":
    if i == 'a':
        print (i)

# a
# a
# a

मान लीजिए आप तत्वों की एक सूची परिभाषित करना चाहते हैं और उन पर एक-एक करके iterate करना चाहते हैं।

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in sequence:
    print (i)

# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial

लेकिन अगर आप सूची की लंबाई निकालना चाहें और फिर उस पर iterate करना चाहें तो? इसके लिए आप in-built len फ़ंक्शन का उपयोग करेंगे और फिर उस लंबाई के आउटपुट पर range लगाएंगे।

ध्यान रखें, range हमेशा एक पूर्णांक मान की अपेक्षा करता है।

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
    print (sequence[i])

# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial

बहुत बढ़िया! लेकिन जब आप सीधे for i in numbers का उपयोग कर सकते हैं तो len फ़ंक्शन की ज़रूरत क्यों? जवाब सरल है। यदि आप sequence के indices के साथ काम करना या उन्हें संशोधित करना चाहते हैं, जैसे मौजूदा सूची के किसी तत्व को बदलना, तब आपको range(len(sequence)) चाहिए होगा।

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
    element = sequence[i]
    if type(element) == int:
        sequence[i] = element + 4

print(sequence)

# [5, 6, 12, 104, 204, 'datacamp', 'tutorial']

कमाल है, है ना? आप if शर्त के आधार पर सूची के तत्वों को संशोधित करने में सक्षम रहे।

अब देखते हैं कि 1 - 20 के बीच विषम संख्याएँ कैसे प्रिंट करें। इसे करने के लिए, आपको range फ़ंक्शन में तीन चीजें देनी होंगी: प्रारंभिक बिंदु, अंतिम बिंदु, और बढ़ोतरी (या steps) जिसकी दर से लूप 1 - 20 के बीच संख्याओं पर increment करेगा।

for i in range(1,20,2):
    print (i)

# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15
# 17
# 19

Nested For लूप

for i in range(11):
    for j in range(i):
        print (i, end=' ')
    print()

# 1 
# 2 2 
# 3 3 3 
# 4 4 4 4 
# 5 5 5 5 5 
# 6 6 6 6 6 6 
# 7 7 7 7 7 7 7 
# 8 8 8 8 8 8 8 8 
# 9 9 9 9 9 9 9 9 9 
# 10 10 10 10 10 10 10 10 10 10 

DataFrame की पंक्तियों और कॉलम्स पर iterate करने के लिए For लूप

import pandas as pd

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

iris.head()
 sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
05.13.51.40.2setosa
14.93.01.40.2setosa
24.73.21.30.2setosa
34.63.11.50.2setosa
45.03.61.40.2setosa
len(iris)

# 150
for i in range(len(iris)):
    Class = iris.iloc[i,4]
    if Class == 'versicolor' and i < 70:
        print (Class)

# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor

अगला, कॉलम्स sepal_length,sepal_width, petal_length और petal_width की हर पंक्ति में दो जोड़ते हैं।

columns = ['sepal_length','sepal_width','petal_length','petal_width']

for indices, row in iris.iterrows():
    for column in columns:
        iris.at[indices,column] = row[column] + 2

iris.head()
 sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
07.15.53.42.2setosa
16.95.03.42.2setosa
26.75.23.32.2setosa
36.65.13.52.2setosa
47.05.63.42.2setosa

Lambda फ़ंक्शन के साथ किसी sequence पर iterate करना

Python का lambda फ़ंक्शन बुनियादी for लूप की तुलना में तेज़ और शक्तिशाली है। यह खासकर DataFrames के साथ काम करते समय व्यापक रूप से उपयोग होता है। आप बहुत कम कोड के साथ Lambda फ़ंक्शन की मदद से अपना डेटा प्रोसेस कर सकते हैं। हालांकि, कभी-कभी इसे समझना कठिन हो जाता है।

x = [20, 30, 40, 50, 60]
y = []

for v in x :
    y += [v * 5]

print(y)

# [100, 150, 200, 250, 300]

अब, इसे lambda और map फ़ंक्शन के साथ आजमाते हैं।

Map एक फ़ंक्शन लेता है, जैसे कि एक lambda फ़ंक्शन, और एक sequence x, और फिर एक नया sequence लौटाता है।

x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)

print(y)

# <map object at 0x4063cc8>

यह एक generator फ़ंक्शन लौटाता है और generator से आउटपुट पाने के लिए; आप आउटपुट को list के आर्गुमेंट के रूप में पास करते हैं।

x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)

print(list(y))

# [100, 150, 200, 250, 300]

अब, एक कदम पीछे चलते हैं और for लूप वाले तरीके और lambda/map() संयोजन—दोनों को देखते हैं। आप देखेंगे कि दोनों के बीच का फर्क map, lambda जोड़ने और "for" व "in" को हटाने का है। और यह भी कि आप इसे एक ही पंक्ति में कोड कर पाए।

निष्कर्ष

इस बुनियादी Python For लूप ट्यूटोरियल को पूरा करने पर बधाई।

For लूप हर प्रोग्रामिंग भाषा की रीढ़ हैं, और जब बात Python की हो, तो For लूप का उपयोग करना बिल्कुल कठिन नहीं है—ये अंग्रेज़ी वाक्य लिखने जैसी सहजता के साथ आते हैं।

यदि आप Python में for लूप्स के बारे में और सीखना चाहते हैं, तो DataCamp का Python Data Science Toolbox (Part 2) कोर्स करें।

कृपया इस ट्यूटोरियल से संबंधित कोई भी प्रश्न नीचे कमेंट्स सेक्शन में पूछें।

विषय