Если отдельная пара чисел имеет нечетное произведение в Python

#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