Как использовать групповой? используя groupby, чтобы найти нечетное или четное число, получая входные данные от функции - PullRequest
0 голосов
/ 26 апреля 2020

Ниже моя задача

  1. Определить функцию even_or_odd, которая принимает целое число в качестве входных данных и возвращает строку четного и нечетного, если заданное число является четным и нечетным соответственно.
  2. Разделите числа в списке n = [10, 14, 16, 22, 9, 3, 37] на две группы, а именно на четные и нечетные на основе определенной выше функции. Подсказка: используйте метод groupby модуля itertools.
  3. Переберите полученный объект groupby и напечатайте его имя группы и список элементов, связанных с группой.

Я написал код ниже : я получаю сообщение об ошибке 'str' объект не вызывается. На самом деле я не уверен, как использовать itertool groupby (), получая значения из функции. Кто-нибудь может направить меня?

from itertools import groupby

def even_or_odd(r):
    for i in r:
        if i%2 == 0:
            return "even"
        else:
            return "odd"


n = [10, 14, 16, 22, 9, 3 , 37]


for key, group in groupby(n, even_or_odd(n)):
    if key == even:
        print(key, list(group))
    else:
        print(key, list(group))

1 Ответ

0 голосов
/ 26 апреля 2020

здесь решение согласно do c https://docs.python.org/3.8/library/itertools.html#itertools .groupby

The key is a function computing a key value for each element

from itertools import groupby

n = [10, 14, 16, 22, 9, 3 , 37]

def even_or_odd(val):
     if val%2 == 0:
       return "even"
     else:  
       return "odd"


for key, group in groupby(n, even_or_odd):
    print(key, list(group)) 

вывод:

even [10, 14, 16, 22]
odd [9, 3, 37]



...