2010-11-13 17 views
38

में पाश सी/C++ के लिए, मैं निम्नलिखित पाश for(int k = 1; k <= c ; k +=2)अजगर

अजगर में ऐसा ही करते कैसे करते हो सकती है?

मैं पाइथन में यह for k in range(1,c): कर सकता हूं, जो सी/सी ++ में for(int k = 1; k <= c ; k++) के समान होगा।

उत्तर

31

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

mylist = [1,2,3] 
for item in mylist: 
    print item 

mydict = {1:'one', 2:'two', 3:'three'} 
for key in mydict: 
    print key, mydict[key] 

यह वास्तव में सीमा() के साथ ऊपर कोड का उपयोग की तुलना में तेजी है, और बाहरी i चर निकाल देता है।

आप में जगह एक सूची के आइटम संपादित करने की जरूरत है, तो आप कर सूचकांक की जरूरत है, लेकिन अभी भी एक बेहतर तरीका है:

for i, item in enumerate(mylist): 
    mylist[i] = item**2 

फिर, यह दोनों तेजी से और माना अधिक पठनीय है । सी ++ से पायथन तक आने पर आपको यह सोचने में मुख्य बदलावों में से एक है।

60

इस उपयोग करके देखें:

for k in range(1,c+1,2): 
+7

एक तरफ ध्यान दें के रूप में यदि आप अजगर 2.x xrange उपयोग कर रहे हैं और अधिक कुशल है। – GWW

+4

@GWW: xrange तकनीकी रूप से अधिक _memory_ कुशल है, लेकिन यह शायद ही कभी किसी भी व्यावहारिक परिणाम का है जब तक कि आपकी सीमा बहुत बड़ी न हो, और 3.x पूरी तरह से 'xrange' नाम से दूर हो जाता है, इसलिए इसका उपयोग करके किसी भी चीज़ से नए लोगों को भ्रमित करने की अधिक संभावना है अन्य। –

+0

@ निकोलस: मैं बस इसका जिक्र कर रहा हूं, मैं वास्तव में भ्रमित करने की कोशिश नहीं कर रहा हूं। मैंने कठोर तरीके से xrange के बारे में सीखा जब मेरे पास मेरे कोड में भारी बोतल गर्दन पैदा हुई थी। मैं नहीं चाहता कि कोई और उस पर फंस जाए: पी – GWW

9

आप अजगर में एक पाश जो कुछ पूर्णांक कोई आदि है, तो बस कॉपी और इस कोड के लिए खोपड़ी प्रिंट लिखने के लिए चाहते हैं, यह काम करेंगे बहुत

 #Display Value from 1 TO 3 
    for i in range(1,4): 
    print "",i,"value of loop" 

     # Loop for dictionary data type 
    mydata = {"Fahim":"Pakistan", "Vedon":"China", "Bill":"USA" } 
    for user, country in mydata.iteritems(): 
    print user, "belongs to " ,country 
15

जवाब अच्छा है, लेकिन लोगों को कि चाहते हैं के लिए range() के साथ इस, ऐसा करने के लिए रूप है:

range(end):

>>> list(range(10)) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

range(start,end):

>>> list(range(1, 11)) 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

range(start,end, step):

>>> list(range(0, 30, 5)) 
[0, 5, 10, 15, 20, 25] 
4

अजगर में आप आम तौर पर C/C++ की तरह छोरों के लिए बजाय सामान्य के लूप में के लिए है, लेकिन आप निम्न कोड के साथ एक ही बात को प्राप्त कर सकते।

for k in range(1, c+1, 2): 
    do something with k 

संदर्भ Loop in Python.