#python #list #loops #filtering
Вопрос:
например, у меня есть список целых чисел, таких как
x = [[1,2,3,4], [4,5,6], [2,3,1,9]]
Предположим, что длина x выражена в миллионах. В этом случае итерация по каждому элементу будет очень медленной.
Есть ли какой-нибудь более быстрый способ?
Комментарии:
1. Пожалуйста, предоставьте дополнительную информацию. Вместо длинного заголовка добавьте более пояснительный абзац. Но что было бы наиболее полезно, так это дать полный пример вашего вклада и того, что вы ожидаете в результате.
2. Вы должны использовать «в», например: y = [i для i в x, если 1 в i] Создает список со всеми списками, содержащими 1.
Ответ №1:
Без каких-либо предварительных знаний или дополнительной информации о списке (например, о том, отсортирован ли он) у вас нет реального выбора, кроме как повторить весь список. Однако обратите внимание, что выполнение этого с помощью генератора может быть более эффективным, чем создание отфильтрованного списка, поскольку значения вычисляются только при попытке их использования, а не заранее:
search = 2
listGenerator = (i for i in x if search in i)
Комментарии:
1. но когда список очень велик (например, миллионы списков в списке), он становится очень медленным
2. Можете ли вы заранее проиндексировать свои списки?