Элегантный способ сравнения последовательностей
Вы можете определить равенство 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
Элегантный способ сравнения последовательностей
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.