Wie kann ich auf eine Reihe nicht-fortlaufende Nummern hinzufügen?
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?
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)