首页 > 解决方案 > Python groupby itertools 方法

问题描述

我是 python 编程新手。我无法创建以下代码:

定义一个函数 even_or_odd,它接受一个整数作为输入,如果给定的数字分别是偶数和奇数,则返回字符串偶数和奇数。根据上述定义的函数,将列表 n = [10, 14, 16, 22, 9, 3 , 37] 的数量分为两组,即偶数和奇数。提示:使用 itertools 模块的 groupby 方法。遍历获得的 groupby 对象并打印它的组名和与组关联的元素列表。

我试过下面的代码:

import itertools
def even_or_odd(n):
    if n%2==0:
        return 'even'
    else:
        return 'odd'
group=[]
uniquekeys=[]
n = [10, 14, 16, 22, 9, 3 , 37]
for k,g in itertools.groupby(n, even_or_odd(n)):
    groups.append(list(g))    
    uniquekeys.append(k)

It is giving "TypeError: unsupported operand type(s) for %: 'list' and 'int' "

标签: python

解决方案


当您尝试通过时,itertools.groupby even_or_odd您可以使用n. even_or_odd需要一个int, 但n它是一个列表。当我认为你的意思时,只需将其更改为itertools.groupby(n, even_or_odd)
Also you append to 。groupsgroup


推荐阅读