Frage

Ich versuche, durch den Bereich (750, 765) und fügen Sie den nicht-fortlaufenden Nummern 769, 770, 774. iterieren Wenn ich die Zahlen nach dem Range-Funktion versuchen Sie, den Bereich Liste, dann wird die einzelnen Zahlen :


>>> for x in range(750, 765), 769, 770, 774: print x
... 
[750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764]
769
770
774

Wie kann ich alle Zahlen in einer einzigen Liste bekommen?

War es hilfreich?

Lösung

Mit dem Einbau-Operator + Ihre nicht-fortlaufenden Nummern auf den Bereich anzuhängen.

for x in range(750, 765) + [769, 770, 774]: print x

Andere Tipps

Es gibt zwei Möglichkeiten, es zu tun.

>>> for x in range(5, 7) + [8, 9]: print x
...
5
6
8
9
>>> import itertools
>>> for x in itertools.chain(xrange(5, 7), [8, 9]): print x
...
5
6
8
9

itertools.chain () ist bei weitem überlegen, da es können Ihnen beliebigen Iterables verwenden, anstatt nur Listen und Listen. Es ist auch effizienter, nicht Liste Kopieren erforderlich ist. Und es lässt Sie verwenden xrange, die Sie sollten, wenn Looping.

Die anderen Antworten auf dieser Seite finden Sie gute Dienste leisten. Nur eine kurze Notiz, dass in Python3.0, range ist ein Iterator (wie xrange in Python2.x war ... xrange ist in 3,0 gegangen). Wenn Sie versuchen, diese 3.0 in Python zu tun, sollten Sie eine Liste aus dem Bereich Iterator erstellen, bevor die Zugabe zu tun:

for x in list(range(750, 765)) + [769, 770, 774]: print(x)

suchen Sie diese:

mylist = range(750, 765)
mylist.extend([769, 770, 774])

In python3, da Sie nicht, eine Liste zu einem Bereich hinzufügen können, wenn aus irgendeinem Grund Sie nicht itertool importieren möchten, können Sie auch manuell das gleiche tun:

for r in range(750, 765), [769, 770, 774]:
    for i in r: 
        print(i)

oder

for i in [i for r in [range(750, 765), [769, 770, 774]] for i in r]: 
    print(i)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top