563 Stimmen

Wie erstelle ich eine Liste mit Zahlen zwischen zwei Werten?

Wie erstelle ich eine aufsteigende Liste zwischen zwei Werten? Zum Beispiel eine Liste zwischen 11 und 16:

[11, 12, 13, 14, 15, 16]

998voto

Jared Punkte 24639

Verwenden Sie range. In Python 2 gibt es direkt eine Liste zurück:

>>> range(11, 17)
[11, 12, 13, 14, 15, 16]

In Python 3 ist range ein Iterator. Um es in eine Liste umzuwandeln:

>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]

Hinweis: Die zweite Zahl in range(start, stop) ist exklusiv. Also, stop = 16+1 = 17.


Um Schritte von 0.5 zu inkrementieren, kann man numpy's arange() und .tolist() in Betracht ziehen:

>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()

[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
 14.0, 14.5, 15.0, 15.5, 16.0, 16.5]

Siehe: Wie verwende ich einen Dezimalschrittwert für range()?

42voto

devnull Punkte 110398

Sie scheinen nach range() zu suchen:

>>> x1=11
>>> x2=16
>>> range(x1, x2+1)
[11, 12, 13, 14, 15, 16]
>>> list1 = range(x1, x2+1)
>>> list1
[11, 12, 13, 14, 15, 16]

Für eine Erhöhung um 0.5 anstelle von 1, sagen Sie:

>>> list2 = [x*0.5 for x in range(2*x1, 2*x2+1)]
>>> list2
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]

16voto

Mike Housky Punkte 3871

Versuchen Sie:

range(x1, x2+1)  

Dies ist eine Liste in Python 2.x und verhält sich weitgehend wie eine Liste in Python 3.x. Wenn Sie Python 3 ausführen und eine Liste benötigen, die Sie ändern können, verwenden Sie:

list(range(x1, x2+1))

8voto

Bhargav Ponnapalli Punkte 9006

Verwenden Sie List Comprehension in Python. Da Sie die Zahl 16 auch in der Liste haben möchten. Verwenden Sie x*2+1. Die Range-Funktion schließt das obere Limit in der Funktion aus.

list=[x for x in range(x1, x2+1)]

8voto

Rajesh Surana Punkte 833

Wenn Sie nach einer Bereichsfunktion suchen, die für den Float-Typ funktioniert, dann ist hier ein sehr guter Artikel.

def frange(start, stop, step=1.0):
    ''' "range()" ähnliche Funktion, die den Float-Typ akzeptiert''' 
    i = start
    while i < stop:
        yield i
        i += step
# Generiere ein Element nach dem anderen.
# Bevorzugt, wenn Sie nicht alle generierten Elemente zur gleichen Zeit benötigen.
# Das spart Speicherplatz.
for i in frange(1.0, 2.0, 0.5):
    print i   # Verwenden Sie das generierte Element.
# Generiere alle Elemente auf einmal.
# Bevorzugt, wenn die generierte Liste klein sein sollte.
print list(frange(1.0, 10.0, 0.5))    

Ausgabe:

1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]

CodeJaeger.com

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.

Powered by:

X