Как я могу добавить непоследовательные числа в диапазон?
Вопрос
Я пытаюсь перебрать диапазон (750, 765) и добавить непоследовательные числа 769, 770, 774.Если я попытаюсь добавить числа после функции диапазона, она вернет список диапазонов, а затем отдельные числа:
>>> 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
Как я могу получить все числа в одном списке?
Решение
Используйте встроенный оператор +, чтобы добавить непоследовательные числа в диапазон.
for x in range(750, 765) + [769, 770, 774]: print x
Другие советы
Есть два способа сделать это.
>>> 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() намного лучше, поскольку позволяет использовать произвольные итерации, а не просто списки и списки.Это также более эффективно и не требует копирования списка.И это позволяет вам использовать xrange, который вам нужен при цикле.
Другие ответы на этой странице сослужат вам хорошую службу.Сразу отметим, что в Python3.0 range
— это итератор (например, xrange в Python2.x...xrange исчез в версии 3.0).Если вы попытаетесь сделать это в Python 3.0, обязательно создайте список из итератора диапазона, прежде чем выполнять сложение:
for x in list(range(750, 765)) + [769, 770, 774]: print(x)
вы ищете это:
mylist = range(750, 765)
mylist.extend([769, 770, 774])
В Python3, поскольку вы не можете добавить список в диапазон, если по какой-то причине вы не хотите импортировать itertool, вы также можете сделать то же самое вручную:
for r in range(750, 765), [769, 770, 774]:
for i in r:
print(i)
или
for i in [i for r in [range(750, 765), [769, 770, 774]] for i in r]:
print(i)