#python #list #filter #mapreduce #reduce
#python #Список #Фильтр #mapreduce #уменьшить
Вопрос:
Я хочу выяснить, имеет ли входная строка нечетное произведение для разных чисел: я сделал это до сих пор:
# To get input string into list of integer
input = [int(i) for i in input.split()]
# to get odd numbers
sequence=filter(lambda i: i % 2, sequence)
Я хочу использовать операцию, в которой я могу фильтровать различные нечетные числа в списке и умножать, пока не получу нечетное число, и возвращать true, если результат не является нечетным возвращением false .
Я новичок в lamda и filter.
Я хочу знать, как я могу использовать это в одном операторе в Python
Ответ №1:
Вы можете использовать itertools.accumulate
для повторного применения функции (например, умножения) к итерируемому:
>>> from itertools import accumulate
>>> bool(list(accumulate({int(i) for i in input().split() if int(i) % 2}, int.__mul__))[-1] % 2)
1 2 3 4 5
True
Ответ №2:
Для фильтрации различных нечетных чисел в списке вы можете использовать понимание списка вместе с set(set используется для получения различных значений).
input = [int(i) for i in input().split()]
input = list(set([i for i in input if i%2!=0])) # it would give distinct odd values