如何使用groupby? 使用groupby通过从函数中获取输入来查找奇数或偶数。

问题描述 投票:0回答:1

以下是我的任务

  1. 定义一个函数even_or_odd,它接收一个整数作为输入,并返回字符串even和odd,如果给定的数字分别是偶数和奇数。
  2. 根据上面定义的函数,将列表n = [10, 14, 16, 22, 9, 3 , 37]中的数字分为两组,即偶数和奇数.提示:使用itertools模块的groupby方法。
  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))
python itertools
1个回答
0
投票

这里的解决方案根据文档 https:/docs.python.org3.8libraryitertools.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]



© www.soinside.com 2019 - 2024. All rights reserved.