python - 如何使用群比?使用 groupby 通过从函数获取输入来查找奇数或偶数
问题描述
下面是我的任务
- 定义一个函数 even_or_odd,它接受一个整数作为输入,如果给定的数字分别是偶数和奇数,则返回字符串偶数和奇数。
- 根据上述定义的函数,将列表 n = [10, 14, 16, 22, 9, 3 , 37] 的数量分为两组,即偶数和奇数。提示:使用 itertools 模块的 groupby 方法。
- 遍历获得的 groupby 对象并打印它的组名和与组关联的元素列表。
我写了下面的代码:我收到错误'str' object is not callable。实际上,我不确定如何通过从函数中获取值来使用 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))
解决方案
这里根据文档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]
推荐阅读
- r - R DT 按类型限制可编辑内容
- laravel - 如何从收藏中获取用户?
- azure-sql-database - 如何在将键属性列存储到 Azure SQL DB 之前添加它?
- asp.net-core - 不更新身份证
- python - 如何创建通用方法来更改不同类属性的 True/False 值?
- angular - Transloco 语言环境。如何添加自定义日期过滤器?
- python-3.x - 无法获取每个类别的特定产品
- php - 如何在 OctoberCMS 上传递 AJAX 调用
- httprequest - 在 RAP OData V2 服务的非托管公开自定义 CDS 实体中获取 HTTPS 请求标头字段?
- php - PHP不被识别为内部或外部命令,可以运行程序或批处理文件