1 У Вас явный оверхед в
list(filter(lambda url: not any('.' + format_file in url for format_file in format_files), sites_list))
Можно сделать проще и, самое главное, быстрее.
2 Кортежи и словари итерируются в общем случае быстрее, чем списки.
3 Если этого мало - поделите исходный список на несколько частей, распараллельте вычисления.
4 Используйте C. Если Вам не нравиться использование массива - C++, STL, Boost Вам в помощь. Помните, о том, что нативный код легко можно вызвать из питона (CPython).