сделал мой код в коротком замыкании (python3) - PullRequest
0 голосов
/ 31 января 2020

Как бы мы адаптировали его для возврата True, если хотя бы три числа нечетные? Замкните короткое замыкание, когда будет найдено третье нечетное число - не проходите весь список, если только нам не нужно. **** Я новичок в python, я хочу знать, что больше времени уходит на использование операторов ==, <= почему? остановил ли этот код обход после того, как нашел 3 нечетных? **** </p>

время импорта start_time = time.time () def d (x):

count = 0
for num in x:
    if num % 2 != 0:
       count += 1
    if count <= 3:
       return True
return False 
print((time.time() - start_time))

f = d ([ 1,2,4,6,8,7,3,11,16,88,66,44,22]) print ((time.time () - start_time), f)

1 Ответ

0 голосов
/ 31 января 2020

Не знаю, правильно ли я вас понял, но могу предложить некоторые изменения в вашем коде. Первый - если вы хотите посчитать количество нечетных чисел и вернуть True, если количество шансов равно <= 3. Вы можете сделать это следующим образом:

>>> def count_odds(lst: list):
...     count = 0
...     for num in lst:
...             count += 1 if num % 2 else 0
...     return count <= 3
... 
>>> count_odds([1, 3, 5, 6])
True
>>> count_odds([1, 3, 7, 9, 11])
False

Эта функция вернет True, только если в списке 3, 2, 1 или 0 нечетных чисел, которые вы передали этому методу. С другой стороны, вы можете достичь своей цели, используя break в for l oop. Вот решение:

>>> lst = [1, 3, 5, 7]
>>> count = 0
>>> for num in lst:
...     if count > 3:
...             break
...     count += 1 if num % 2 else 0
>>> print("More than 3") if count > 3 else print("Less than 3")
Less than 3
# Rest of your code.

И еще один способ сделать это:

>>> def count_odds(lst: list):
...     result = list(map(lambda x: bool(x % 2), lst))
...     return sum(result) <= 3
... 
>>> count_odds([1, 3, 7])
True
>>> count_odds([1, 3, 7, 9])
False

Функция map берет каждый элемент списка lst , затем возвращает True, если элемент нечетный, иначе False. Затем функция суммы суммирует все True значения из списка result и дает вам ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...