filter

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
здравствуйте, читал, что нижеследующая задача:
# числа от 1 до 100
# вместо чисел кратных трём, программа должна печатать 'Fizz'
# вместо чисел кратных пяти - 'Buzz'
# если число кратно и трём, и пяти, программа должна печатать 'FizzBuzz'
имеет много решение и самое быстрое:
Код:
print('\n'.join(
'FizzBuzz' if i % 3 == 0 and i % 5 == 0 else 'Fizz' if i % 3 == 0 else 'Buzz' if i % 5 == 0 else str(i) for i in
range(1, 101)))  # 2.53 msec
также читал в другом месте, что через filter ещё быстрей, как нижеследующий код:

Код:
a = [i for i in range(1, 101)]
print(list(filter(lambda x: x % 3 == 0, a)))
print(list(filter(lambda x: x % 5 == 0, a)))
print(list(filter(lambda x: x % 3 == 0 and x % 5 == 0, a)))
переделать, чтобы делало как сказано в условии?, будет ли быстрей? спасибо
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
что вам мешает запустить и замерить?
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
как нижеследующий код:

Код:
a = [i for i in range(1, 101)]
print(list(filter(lambda x: x % 3 == 0, a)))
print(list(filter(lambda x: x % 5 == 0, a)))
print(list(filter(lambda x: x % 3 == 0 and x % 5 == 0, a)))
переделать, чтобы делало как сказано в условии?
не знаю как?
 

Форум IT Специалистов