У меня есть функция python, определенная следующим образом, которую я использую для удаления из списка1 элементов, которые уже находятся в списке2. Я использую Python 2.6.2 на Windows XP
def compareLists(list1, list2):
curIndex = 0
while curIndex < len(list1):
if list1[curIndex] in list2:
list1.pop(curIndex)
else:
curIndex += 1
Здесь list1 и list2 являются списками списков
list1 = [ ['a', 11221, '2232'], ['b', 1321, '22342'] .. ]
# list2 has a similar format.
Я пробовал эту функцию с list1 с 38 000 элементов и list2 с 150000 элементов. Если я вставлю оператор print для печати текущей итерации, я обнаружу, что функция замедляется с каждой итерацией. Сначала он обрабатывает около 1000 или более элементов в секунду, а затем через некоторое время уменьшается до 20-50 секунд. Почему это может происходить?
РЕДАКТИРОВАТЬ: в случае с моими данными curIndex остается 0 или очень близко к 0, поэтому операция pop в list1 почти всегда выполняется для первого элемента.
Если возможно, может ли кто-нибудь также предложить лучший способ сделать то же самое по-другому?