首先,标识符的列表可以是字符串或数值。第二,包含多个项目的列表。对于每个标识符(标识符列表中的项),计算标识符在项列表中出现的频率。对于每个标识符,创建以下outout: identifier在列表中出现的次数。将标记<>替换为标识符的实际值和出现的次数。接下来,从item-list中删除所有匹配项,并返回修剪后的列表。修剪后的列表现在应该只包含标识符列表中找不到的项。问题是我得不到任何输出。如何修改print命令,使其提供所需的输出?而且我在删除实例时也遇到了问题。
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]
发布于 2019-11-06 21:08:52
首先,您并没有真正循环遍历标识符。因此,尽管您传入了一个列表,但一次只能处理一个标识符。
其次,您使用的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
https://stackoverflow.com/questions/58682310
复制相似问题