?
является троичным оператором на другом языке, но в python это просто x if a else y
.
Для понимания списка [ret for ret in range(X) if_statement]
эквивалентно:
l = []
for ret in range(X):
if_statement:
l.append(ret)
Так Вы можете сделать это:
In [1]: a = [i for i in range(20) if i % 3 ==0]
In [2]: a
Out[2]: [0, 3, 6, 9, 12, 15, 18]
Но вы также можете использовать функцию range
и указать размер шага:
In [3]: list(range(0, 20, 3))
Out[3]: [0, 3, 6, 9, 12, 15, 18]