распечатывать вхождение предметов в список - PullRequest
0 голосов
/ 03 ноября 2019

Во-первых, список идентификаторов, которые могут быть строками или числовыми значениями. Во-вторых, список, содержащий ряд предметов. Для каждого идентификатора (элемента в списке идентификаторов) посчитайте, как часто идентификатор встречается в списке элементов. Для каждого идентификатора создайте следующий результат: Идентификатор произошел раз в списке. Замените маркеры <> фактическими значениями для идентификатора и количества вхождений. Затем удалите все вхождения из списка элементов и верните сокращенный список. Урезанный список теперь должен содержать только те элементы, которые не были найдены в списке идентификаторов. Проблема в том, что я не получаю никакого вывода. Как мне изменить команду печати, чтобы она выдала мне нужный вывод? А также у меня есть проблемы с удалением вхождений.

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]

1 Ответ

0 голосов
/ 06 ноября 2019

Прежде всего, вы действительно не зацикливаетесь на идентификаторах. Таким образом, вы можете обрабатывать только один идентификатор за раз, хотя вы передаете список.

Во-вторых, выражение 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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...