Что бы я сделал, это append
значения в новый list
вместо копирования старого list
и удаления значений из него, а также избавления от enumerate
, который там ничего не делает:
from timeit import timeit
array = ['123', '1234', '55', '378', '785455', '54314', '4324324', '543535', '54']*1000
def remove_contained(arr):
to_delete = []
copy_arr = arr.copy()
for index, value in enumerate(arr):
for j_index, j_value in enumerate(arr):
if value in j_value and value != j_value:
copy_arr.remove(value)
break
return copy_arr
def remove_contained_v2(arr):
new_arr = []
for value in arr:
for other_value in arr:
if value in other_value and value != other_value:
new_arr.append(value)
return new_arr
Затем мы рассчитываем время:
print(timeit("""
remove_contained(array)
""", 'from __main__ import remove_contained, array', number=5
))
print(timeit("""
remove_contained_v2(array)
""", 'from __main__ import remove_contained_v2, array', number=5
))
Оригинал занимает 21.097198000000002
, а другая версия 18.412295999999998
. Так что быстрее.