>>> range(1,11)
gibt Ihnen
[1,2,3,4,5,6,7,8,9,10]
Warum nicht 1-11?
Haben sie das einfach zufällig so gemacht oder hat das einen Wert, den ich nicht sehe?
>>> range(1,11)
gibt Ihnen
[1,2,3,4,5,6,7,8,9,10]
Warum nicht 1-11?
Haben sie das einfach zufällig so gemacht oder hat das einen Wert, den ich nicht sehe?
Die Länge des Bereichs ist der obere Wert minus der untere Wert.
Es ist sehr ähnlich zu etwas wie:
for (var i = 1; i < 11; i++) {
//i goes from 1 to 10 in here
}
in einer C-ähnlichen Sprache.
Auch Ruby's Reichweite ist gut:
1...11 #this is a range from 1 to 10
Ruby erkennt jedoch, dass Sie oft den Terminalwert einschließen möchten, und bietet eine alternative Syntax an:
1..10 #this is also a range from 1 to 10
Betrachten Sie den Code
for i in range(10):
print "You'll see this 10 times", i
Die Idee ist, dass Sie eine Liste der Länge y-x
über die man (wie oben zu sehen) iterieren kann.
Lesen Sie mehr über die Python-Dokumente for range - sie betrachten die Iteration der for-Schleife als primären Anwendungsfall.
Grundlegend in Python range(n)
iteriert n
Zeiten, die von exklusiver Natur ist, weshalb sie nicht den letzten Wert liefert, wenn sie gedruckt wird, können wir eine Funktion erstellen, die inklusiven Wert gibt, was bedeutet, dass sie auch den letzten Wert im Bereich druckt.
def main():
for i in inclusive_range(25):
print(i, sep=" ")
def inclusive_range(*args):
numargs = len(args)
if numargs == 0:
raise TypeError("you need to write at least a value")
elif numargs == 1:
stop = args[0]
start = 0
step = 1
elif numargs == 2:
(start, stop) = args
step = 1
elif numargs == 3:
(start, stop, step) = args
else:
raise TypeError("Inclusive range was expected at most 3 arguments,got {}".format(numargs))
i = start
while i <= stop:
yield i
i += step
if __name__ == "__main__":
main()
In vielen Fällen ist es einfach bequemer, darüber nachzudenken.
Grundsätzlich können wir uns einen Bereich als ein Intervall zwischen start
y end
. Wenn start <= end
ist die Länge des Intervalls zwischen ihnen end - start
. Wenn len
tatsächlich als die Länge definiert wurde, hätten Sie:
len(range(start, end)) == start - end
Wir zählen jedoch die ganzen Zahlen, die in dem Bereich enthalten sind, anstatt die Länge des Intervalls zu messen. Um die obige Eigenschaft beizubehalten, sollten wir einen der Endpunkte einschließen und den anderen ausschließen.
Hinzufügen der step
Parameter ist wie die Einführung einer Längeneinheit. In diesem Fall würde man erwarten, dass
len(range(start, end, step)) == (start - end) / step
für die Länge. Um die Anzahl zu erhalten, verwenden Sie einfach eine ganzzahlige Division.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.