Len([x для x в y, если x не в y]) !=0. Кто-нибудь может объяснить, как это может произойти? (с использованием питриции) ⇐ Python

Программы на Python
Anonymous
Len([x для x в y, если x не в y]) !=0. Кто-нибудь может объяснить, как это может произойти? (с использованием питриции)

Сообщение Anonymous »

с использованием питриции==1.0.2

Код: Выделить всё

import pytricia
pyt =   pytricia.PyTricia()
pyt['2400:0:840::/43']='l'          # bad block 1
pyt['2400:0:860::/44']='k'          # bad block 2
pyt['aaaa:0:860::/44']='k'          # control block 1
pyt['aaab:0:860::/43']='k'          # control block 2
pyt.keys()
Out[143]: ['2400:0:860::/44', '2400:0:840::/43', 'aaaa:0:860::/44', 'aaab:0:860::/43']
len([x for x in pyt if x not in pyt])
Out[144]: 2
Кроме того,
пытается получить доступ к pyt['2400:0:840::/43'] или pyt['2400:0:860::/44'] возвращает ошибку.
Однако:

Код: Выделить всё

pyt =   pytricia.PyTricia()
pyt['2400:0:860::/44']='k'          # bad block 2
pyt['2400:0:840::/43']='l'          # bad block 1
pyt['aaaa:0:860::/44']='k'          # control block 1
pyt['aaab:0:860::/43']='k'          # control block 2
pyt.keys()
Out[146]: ['2400:0:840::/43', '2400:0:860::/44', 'aaaa:0:860::/44', 'aaab:0:860::/43']
len([x for x in pyt if x not in pyt])
Out[147]: 0
Думаю, это ошибка в pytricia, но len([x for x in pyt if x not in pyt])!=0 заставляет вас остановиться и задаться вопросом...
len([x для x в y, если x не в y]) должен навсегда возвращать 0!

Подробнее здесь: https://stackoverflow.com/questions/790 ... can-happen

Вернуться в «Python»