Элегантный способ сравнения последовательностей

Вы можете определить равенство pythonista любых двух итераций (строк, кортежей, списков pythonista и даже пользовательских последовательностей) без python создания и сохранения повторяющихся pythonista списков, используя следующее:

all(x == y for x, y in itertools.izip_longest(a, b))

Обратите pythonista внимание, что если два итератора python-interpreter имеют разную длину, более pythonic короткий будет дополнен тегами python None. Другими словами, он будет pythonic считать [1, 2, None] равным (1, 2).

Изменить: как отмечает py Камил в комментариях, izip_longest доступен pythonista только в Python 2.6. Однако python-shell the docs for the function также предоставляет альтернативную python реализацию, которая должна pythonista работать вплоть до 2.3.

Изменить 2: после pythonista тестирования на нескольких python-interpreter разных машинах выяснилось, что python-interpreter это быстрее, чем list(a) == list(b), только python-shell в определенных обстоятельствах, которые python-shell я не могу выделить. В большинстве python-shell случаев это занимает примерно python в семь раз больше времени. Однако python-interpreter я также обнаружил, что tuple(a) == tuple(b) постоянно python работает как минимум в два py раза быстрее, чем версия py list.

python

2022-08-29T20:03:12+00:00
Вопросы с похожей тематикой, как у вопроса:

Элегантный способ сравнения последовательностей