Вы можете использовать:
t = 4
u = 11
b = [x for x in range(t*u) if (x%u)%2 == 0]
print(b)
ВЫВОД:
[0, 2, 4, 6, 8, 10, 11, 13, 15, 17, 19, 21, 22, 24, 26, 28, 30, 32, 33, 35, 37, 39, 41, 43]
ПОЯСНЕНИЯ:
Вы хотите диапазон от 0
до u
.
Этот диапазон будет повторяться t
раз.
Если вы считаете t == 1
, вы хотите взять альтернативные номера. Поскольку вы всегда начинаете с 0
, это означает все четные числа (то есть n%2 == 0
).
Если бы у вас был второй цикл (t == 2
), это был бы диапазон от 0+u
до u+u
. Поскольку мы хотим привести этот диапазон к известному условию (range(0,u)
), поэтому мы можем применить n%2 == 0
, мы делим на u
каждое целое число в нашей итерации, так что остальные соответствуют значению на том же шаге в range(0,u)
.
Пример:
Мы можем взять все числа в полном диапазоне (t*u
):
full_range = [x for x in range(t*u)] # output: [0, 1, 2, 3, 4, 5,...43]
Сократить все эти числа до базового диапазона (range(0,u
):
basic_range = [y%u for y in full_range]
который выводит:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- Проверьте четные числа:
even_numbers = [z%2 == 0 for z in basic_range]
который выводит:
[True, False, True, False, True, False, True, False, True, False, True, True, False, True, False, True, False, True, False, True, False, True, True, False, True, False, True, False, True, False, True, False, True, True, False, True, False, True, False, True, False, True, False, True]
Вы можете видеть, что индексы с True
- это те номера, которые вы хотите выбрать; поэтому, если вы примените эти условия к своему полному диапазону (range(0,t*u)
) и выберете только целые числа, которые удовлетворяют вашим условиям, у вас будет список вашего номера.
В комментарии вы выразили необходимость пропустить также каждый 11-й номер.
следуя предыдущему объяснению, мы можем добавить условие (x%u) != 10
:
[x for x in range(t*u) if (x%u)%2 == 0 and (x%u) != 10]
который выводит:
[0, 2, 4, 6, 8, 11, 13, 15, 17, 19, 22, 24, 26, 28, 30, 33, 35, 37, 39, 41]