Каков самый быстрый способ получить список списков, содержащих определенное целое число, в списке списка целых чисел

#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. Можете ли вы заранее проиндексировать свои списки?