LINUX.ORG.RU

Проверка списка (list) на изменение, сравнение с другим списком...

 , ,


0

1

Нужна помощь Товарищи Есть список

texts=("Xnj asda ad ", "lkjlkjl lkl ","lkjlkjljk654546 54 545","go", "asdasd", "com1")
print (hash(texts))

Задача... Выяснить изменился ли список с предыдущей итерации или нет.

каждый раз при запуске при одном и том же значении выдает новое значение hash:

-1912991311 [Finished in 0.1s]

1725730113 [Finished in 0.0s]

Подскажите пожалуйста как лучше..)

Ответ на: комментарий от pawnhearts

Исправил это старая версия... Пробовал и на кортеже

Dimon07 ()
Ответ на: комментарий от pawnhearts

Так если

texts=["Xnj asda ad ", "lkjlkjl lkl ","lkjlkjljk654546 54 545","go", "asdasd", "com1"]
print (hash(texts))
выдает ошибку...
TypeError: unhashable type: 'list'

Dimon07 ()
Ответ на: комментарий от Dimon07

Ну, и приведи список к hashable type, если так хочется через хеши сравнивать.

vvn_black ★★★★★ ()
Ответ на: комментарий от Dimon07

Как вариант, для своих объектов, которые unhashable type, можно переопределить метод __hash__()

Лучше документации, никто не подскажет, https://docs.python.org/3/library/functions.html#hash

vvn_black ★★★★★ ()
Последнее исправление: vvn_black (всего исправлений: 1)

Изи!

prev_lst = ['a', 'b', 'c']
prev_hash = hash(''.join(prev_lst))

new_lst = ['a', 'c']
new_hash = hash(''.join(new_lst))

print prev_hash == new_hash

P.S. Но только если у тебя там строки ;)

Norgat ★★★★★ ()
Последнее исправление: Norgat (всего исправлений: 1)

А если надо часто это проверять и все по феншую делать, то копать надо в сторону __getitem__ + __setitem__ + __delitem__ и собственного класса списка.

Norgat ★★★★★ ()

А что сравнить списки сравниванием списков уже не модно? Поэлементно. Или нужно обязательно костылями? И да, это не список.

slovazap ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.