2010-11-13 14 views
38

In C/C++, kann ich die folgende Schleife for(int k = 1; k <= c ; k +=2)for-Schleife in Python

Wie die gleiche Sache in Python tun?

Ich kann dies for k in range(1,c): in Python, die mit for(int k = 1; k <= c ; k++) in C/C++ identisch wäre.

Antwort

31

Sie sollten auch wissen, dass in Python, Integer-Indizes iterieren ist schlechter Stil, und auch langsamer als die Alternative. Wenn Sie nur die einzelnen Elemente einer Liste oder eines Diktats anzeigen möchten, führen Sie eine direkte Schleife durch die Liste oder das Diktat durch.

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] 

Dies ist tatsächlich schneller als mit Bereich den obigen Code() verwendet, und entfernt die Fremd i variabel.

Wenn Sie an Ort und Stelle Elemente einer Liste bearbeiten, dann Sie tun müssen den Index, aber es gibt immer noch einen besseren Weg:

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

Auch dies ist sowohl schneller als auch als besser lesbar . Dies ist eine der Hauptverschiebungen, die Sie machen müssen, wenn Sie von C++ nach Python kommen.

60

Versuchen Sie dies mit:

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

als eine Randnotiz, wenn Sie Python 2.x xrange verwenden ist effizienter. – GWW

+4

@GWW: xrange ist technisch mehr _memory_ effizient, aber es ist selten von praktischer Konsequenz, es sei denn, Ihre Reichweite ist extrem groß, und 3.x macht den Namen "xrange" völlig überflüssig, so dass es Anfänger eher verwirrt als alles andere sonst. –

+0

@Nicholas: Ich erwähne es nur, ich versuche wirklich nicht zu verwirren. Ich habe auf harte Weise über xrange gelernt, als ich eine Reichweite hatte, die einen massiven Flaschenhals in meinem Code verursachte. Ich möchte nicht, dass jemand anderes daran festhält: P – GWW

9

Wenn Sie eine Schleife in Python schreiben möchten, die eine gewisse ganze Zahl druckt kein etc, dann nur diesen Code kopieren und Pastete, wird es funktionieren alot

 #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

Die Antwort ist gut, aber für die Leute, die wollen dies mit range(), die Form zu tun ist:

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

In Python Sie in der Regel für allgemeine in Schleifen haben stattdessen für Schleifen wie C/C++, aber Sie können die gleiche Sache mit dem folgenden Code erreichen.

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

Referenz Loop in Python.