Python - печатать только тогда, когда что-то добавлено в список - PullRequest
0 голосов
/ 21 ноября 2018

Итак, у меня возникла идея, где у вас есть список и т. Д. [1,2,3,4,5], и моя идея заключалась в том, что, если некоторые из них будут выброшены или удалены, тогда они не должны печататься.скажем и т. д. мы удаляем номер 3.В этом случае наш список будет [1,2,4,5], и сценарий должен быть обычным.Но всякий раз, когда значение добавляется в список.Затем распечатайте весь список и т. Д. Добавьте число 6 -> [1,2,4,5,6] - Распечатайте весь список.

Проблема в том, что я не хочу получать уведомления, когда что-то происходитудалил, поэтому моя идея с самого начала состояла в том, чтобы проверить длину списка, а затем уведомлять всякий раз, когда он изменяется, но потом я понял, что неправильно я делаю то, что он будет уведомлять всякий раз, когда он будет добавлен и / или удален, что теперь, почему яздесь.

То, что я сделал, было сравнением new_name_list против old_name_list, но этот будет уведомлять о любых изменениях, которые произойдут в основном.

import names


def get_value(value):

     value = names.get_full_name()

     names_list = []
     for names in names.get_last_name():
        names_list.append(names)
        break

     identifier = ('{} {}').format(value, names_list)

     return identifier


if __name__ == '__main__':

    old_name_list = get_value()

    while True:
        new_name_list = get_value()
        if new_name_list not in old_name_list:
            print("Yay new name added")

        else:
            print('I will re try again in 5 sec')
            time.sleep(5)

Мой вопрос- Как я могу сделать так, чтобы он печатал только тогда, когда значение names_list получит уведомление ONLY , когда что-то добавляется, но не удаляется?

и т. Д.

  1. [1,2,3,4,5] - печать с начала
  2. [1,2,4,5] - удалено 3 - не печатать
  3. [1,2,4,5,6] - Распечатать список, что-то добавлено
  4. [1,4,5,6] - Удалено 2 - Не печатать
  5. .........

Надеюсь, я все правильно объяснил, и если есть какие-то недоразумения.Пожалуйста, дайте мне знать, и я постараюсь редактировать как можно быстрее, а также научиться писать лучше, а также в следующий раз (Любой совет будет оценен :))

1 Ответ

0 голосов
/ 21 ноября 2018

Алгоритм может быть следующим:

  1. Упорядочить старый и новый списки.
  2. Если длина равна -> сравнить элемент-элемент.Если новый список содержит элементы, отличные от старого, это означает, что были добавлены новые значения.
  3. Если длина нового списка> длина старого списка также означает, что были добавлены новые элементы.

Пример:

def detect_change(old_list, new_list):
    changed_flag = False
    old_list.sort()
    new_list.sort()
    if len(old_list) == len(new_list):
        for i in range(0, len(old_list)):
            if old_list[i] != new_list[i]:
                changed_flag = True
    elif len(old_list) < len(new_list):
        changed_flag = True
    return changed_flag

list1 = ["a", "b", "c", "d"]
list2 = ["a", "b", "c", "k"]

print(detect_change(list1, list2))
...