【问题标题】:How to use groupby? using groupby to find odd or even number by getting inputs from a function如何使用群比?使用 groupby 通过从函数获取输入来查找奇数或偶数
【发布时间】:2020-04-26 13:40:25
【问题描述】:

下面是我的任务

  1. 定义一个函数 even_or_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】:

    这里是解决方案 根据文档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]
    
    
    
    

    【讨论】:

    • 感谢 Beny,所以 group by 将分别传递每个元素。还有它是如何通过正确识别键来分别显示偶数和奇数的。
    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多