Нет, нет возможности сделать сравнение, если два списка быстрее. Но вы говорите, что у вас есть гигантский список списков. И это звучит так, будто вы задаете неправильный вопрос. И если мы предположим, что вы хотите, чтобы выяснить, какие перечислены в списке списков, которые являются одинаковыми, то да, есть более быстрый способ сделать это:
>>> list_of_lists = [[1,2,3,4,5,6,7], [1,3,3,4,5,6,7], [1,2,3,4,5,6,6], [1,2,3,4,5,6,7]]
>>> list_of_hashes = [hash(tuple(x)) for x in list_of_lists]
>>> list_of_hashes
[1738718158840515323, -9068250430673137562, 1738718158842010488, 1738718158840515323]
Как вы видите здесь, я делаю хэш из каждого списка (я должен сначала сделать их в кортежи, потому что списки не хешируются). Тогда сравнение тривиально, так как теперь у вас есть список целых чисел, а не список списков. Если вы не заботитесь о порядке пунктов в списке, используйте вместо этого hash(set(x))
.
>>> list_of_hashes[0] == list_of_hashes[1]
False
>>> list_of_hashes[0] == list_of_hashes[2]
False
>>> list_of_hashes[0] == list_of_hashes[3]
True
Это намного быстрее, если у вас много длинных списков, и вы сравниваете все списки со всеми другими списками.
сортируются ли списки? –
@ChrisPalmer Nay. Это большой список значений гистограммы, поэтому они несортированы. –
Я не думаю, что это было бы важно, если бы они были отсортированы. – user2357112