首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打印出列表中项目的出现情况

打印出列表中项目的出现情况
EN

Stack Overflow用户
提问于 2019-11-04 00:38:41
回答 1查看 43关注 0票数 0

首先,标识符的列表可以是字符串或数值。第二,包含多个项目的列表。对于每个标识符(标识符列表中的项),计算标识符在项列表中出现的频率。对于每个标识符,创建以下outout: identifier在列表中出现的次数。将标记<>替换为标识符的实际值和出现的次数。接下来,从item-list中删除所有匹配项,并返回修剪后的列表。修剪后的列表现在应该只包含标识符列表中找不到的项。问题是我得不到任何输出。如何修改print命令,使其提供所需的输出?而且我在删除实例时也遇到了问题。

代码语言:javascript
运行
复制
def task_3_2_2(items, identifier): 
    occurences = items.count(identifier) 
    items.pop(occurences)
    print('Identifier {} has occured {} times'.format(identifier, task_3_2_2(items, identifier)))
    print (items)

我现在将我的代码修改为:

代码语言:javascript
运行
复制
def task_3_2_2(items, identifier): 
    i = 0
    for i in items:
        if items.count(i) == identifier:
            items.pop(i)
        print (items)

但是如果我调用它,例如

代码语言:javascript
运行
复制
task_3_2_2([8, 6, 8, 10, 8, 20, 10, 8, 8],[8])

输出结果如下:

代码语言:javascript
运行
复制
[8, 6, 8, 10, 8, 20, 10, 8, 8]
EN

回答 1

Stack Overflow用户

发布于 2019-11-06 21:08:52

首先,您并没有真正循环遍历标识符。因此,尽管您传入了一个列表,但一次只能处理一个标识符。

其次,您使用的if-子句

代码语言:javascript
运行
复制
if items.count(i) == identifier:

并不是真的做你想要做的事情。实际上,您可以检查项的出现次数是否等于标识符。很可能不是你想要的。

可能的解决方案可能如下所示:

代码语言:javascript
运行
复制
def task_3_2_2(items, identifiers): 
    for id in identifiers:
        # Count occurances of identifier id in items
        id_count = items.count(id)
        print(f"Identifier {id} has occured {id_count} times")
        
        # Filter values not equal than identifier id
        items = list(filter(lambda x: x != id, items))
    return items

task_3_2_2([8, 6, 8, 10, 8, 20, 10, 8, 8],[8])

输出:

标识符8出现了5次

6、10、20、10

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58682310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档