Ответ 1
Вы можете написать range(0, 10, 2)
.
Кто-нибудь знает, имеет ли Python встроенную функцию для печати даже значений. Например, например range().
Спасибо
Вы можете написать range(0, 10, 2)
.
Просто используйте шаг 2:
range(start, end, step)
Try:
range( 0, 10, 2 )
Я не знаю, это то, что вы хотите услышать, но довольно тривиально отфильтровывать нечетные значения со списком.
evens = [x for x in range(100) if x%2 == 0]
или
evens = [x for x in range(100) if x&1 == 0]
Вы также можете использовать необязательный параметр размера шага для range
для подсчета на 2.
>>> if 100 % 2 == 0 : print "even"
...
even
#This is not suggestible way to code in Python, but it gives a better understanding
numbers = range(1,10)
even = []
for i in numbers:
if i%2 == 0:
even.append(i)
print (even)
Существует также несколько способов написать ленивые бесконечные итераторы четных чисел.
Мы будем использовать модуль itertools
и more_itertools
1 чтобы сделать итераторы, которые эмулируют range()
.
import itertools as it
import more_itertools as mit
# Infinite iterators
a = it.count(0, 2)
b = mit.tabulate(lambda x: 2 * x, 0)
c = mit.iterate(lambda x: x + 2, 0)
Все последние опции могут генерировать бесконечную последовательность четных чисел, 0, 2, 4, 6, ...
.
Вы можете обрабатывать их, как любой генератор, зацикливаясь на них, или вы можете выбрать n
числа из последовательности через itertools.islice
или take
из itertools recipes, например:
mit.take(10, a)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Это эквивалентно list(range(0, 20, 2))
. Однако, в отличие от range()
, итератор приостанавливается и при следующем запуске возвращает следующую партию четных чисел:
mit.take(10, a)
# [20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
Подробнее
Представленные параметры - это все бесконечные итераторы, которые start
имеют целое число, т.е. 0
.
itertools.count
дает следующее значение, увеличенное на step=2
(см. эквивалентный код).more_itertools.tabulate
является itertools recipe, который отображает функцию для каждого значения числовой строки (см. исходный код).more_itertools.iterate
дает начальное значение (0
). Затем он применяет функцию к последнему элементу (увеличивается на 2), дает результат и повторяет этот процесс (см. исходный код). 1 Сторонний пакет, который реализует множество полезных инструментов, включая рецепты itertools, такие как take
и tabulate
.
a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
b = [i for i in a if i % 2 == 0]
print("Original List -->", a,"\n")
print("and the Even Numbers-->", b)