Сохраните значение из базы данных, добавьте проверку, добавляется ли элемент в конец списка - PullRequest
0 голосов
/ 26 октября 2019

Я подключился к базе данных и получил значения, это абсолютно нормально. Но я пытаюсь выполнить функцию, когда значение добавляется в конец списка.

Что я на самом деле хочу, так это сравнить

len(oldlist) с len(newlist)

if len(newlist > oldlist):
   Message.send(m)

Я даже пытался использовать append:

if newlist.append(ValueFromDB):
  pass
(can a if statment like this work?)

Но все приводит к одной и той же проблеме, я получаю одинаковое значение len из DB, поэтому оно должно бытьКстати, чтобы проверить, добавляет ли новое значение в конец списка, и если это так

Message.send(m)

Мне нужны некоторые идеи, чтобы на самом деле это осуществить, есть ли какой-нибудь питонный способ выполнить это? Я знаю, что вопрос немного беспорядочный, но я немного запутался =)

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

Я думаю, что у вас возникла эта проблема, потому что oldlist и newlist одинаковы object, проверьте это:

newlist = [1, 2, 3]
oldlist = newlist

newlist.append(4)
print(oldlist)  # [1, 2, 3, 4]
print(id(newlist) == id(oldlist))  # True
print(len(newList) == len(oldList))  # True

Поэтому, когда вы отслеживаете oldlistиспользуйте копию оригинального списка:

newlist = [1, 2, 3]
oldlist = newlist[:]  # create a copy

newlist.append(4)
print(oldlist)  # [1, 2, 3]
print(id(newlist) == id(oldlist))  # False
print(len(newList) == len(oldList)) # False
0 голосов
/ 26 октября 2019

Я не уверен, как вы обращаетесь к базе данных - и как вы добавляете данные в список - но что-то вроде этого должно работать.

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

Т.е.

_list = []
_list_len = 0
while True:
    value = input("Input value of just press enter to skip...")
    if len(value) > 0: 
        _list.append(value)

    if len(_list) > _list_len:
        print("Sending message...")
        _list_len = len(_list)

ВЫХОД:

Input value of just press enter to skip...1
Sending message...
Input value of just press enter to skip...2
Sending message...
Input value of just press enter to skip...
Input value of just press enter to skip...
Input value of just press enter to skip...3
Sending message...
Input value of just press enter to skip...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...