Как я могу добавить непоследовательные числа в диапазон?

StackOverflow https://stackoverflow.com/questions/678410

  •  21-08-2019
  •  | 
  •  

Вопрос

Я пытаюсь перебрать диапазон (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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top