python - 打印出列表中项目的出现
问题描述
首先,标识符列表可以是字符串或数值。第二,一个包含许多项目的列表。对于每个标识符(标识符列表中的项目)计算标识符在项目列表中出现的频率。为每个标识符创建以下输出:标识符在列表中出现的次数。将标记 <> 替换为标识符的实际值和出现次数。接下来,从项目列表中删除所有出现并返回修剪后的列表。修剪后的列表现在应该只包含在标识符列表中找不到的项目。问题是我没有得到任何输出。我如何修改打印命令以便它给我我需要的输出?而且我也有删除事件的问题。
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)
我现在将我的代码修改为:
def task_3_2_2(items, identifier):
i = 0
for i in items:
if items.count(i) == identifier:
items.pop(i)
print (items)
但是,如果我例如用
task_3_2_2([8, 6, 8, 10, 8, 20, 10, 8, 8],[8])
输出只是:
[8, 6, 8, 10, 8, 20, 10, 8, 8]
解决方案
首先,您并没有真正遍历标识符。因此,您一次只能处理一个标识符,尽管您传入了一个列表。
其次,您使用的 if 子句
if items.count(i) == identifier:
并没有真正做到,你想让它做什么。您实际上检查项目的出现次数是否等于标识符。很可能不是你想要的。
一个可能的解决方案可能如下所示:
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]
推荐阅读
- c - 如何判断 ELF 二进制文件是否是用 BINDNOW 构建的?
- javascript - 获取最近的坐标对象的id
- c# - 生成一维整数数组,数组长度为 10,范围从 1 到 20
- zsh - 带有 Powerlevel10k 的 ZSH 在终端启动时不起作用
- mysql - 使用用户定义的变量动态命名第二个数据库以将表与第二个数据库连接起来
- github-actions - 如何在发布时在 github 操作中获取目标分支
- java - 使用 String.format 时如何打印不带引号的 null
- python - 有什么方法可以将 Tensorflow 数据集连接到 plaidML-keras 以使用 GPU 进行深度学习?
- reactjs - 编辑表格中的特定单元格
- codeblocks - Code::Blocks 中的 wxWidgets 字体错误“assert”numWeight > 0“在 GetWeightClosestToNumericValue() 中失败”