Это невозможно сделать с списковыми но можно с постижениями генератора.
В чем разница между этими двумя? Перечисления списков будут перебирать все повторяющиеся все и возвращать вам список в соответствии с вашими операциями над элементами в итерабельном. Ключ здесь все сразу.
В этом примере используются проверки списков, и вот что происходит: сначала оценивается понимание списка. В вашем случае это не удастся, но даже если это не сработает, он будет переименован во все в итерабельном somelist
и вернет результирующий список обратно. Затем этот список нарезается и возвращается новый результирующий список.
Генераторы и генераторы вообще имеют разные способы работы. Они представляют собой в основном блоки кода, которые приостановлены до тех пор, пока вы не запросите у них больше данных, что вы действительно хотите сделать.
В сущности, вы создаете генератор следующим образом:
g = (p for p in (1,2,3,4,5,0,6) if 100/p)
Теперь у вас есть генератор, который будет генерировать значения для вас, когда вы запроса это сделать так, согласно «правилу» вы дали Это.
Как только у вас есть генератор под рукой, есть несколько способов получить из него n
элементов.
Вы могли бы написать простой цикл следующим образом:
results = []
for x in range(3): # n = 3 in your case
results.append(next(g))
Конечно, это не Pythonic.Предполагая, что вы хотите получить список назад, теперь вы можете использовать список понимание:
results = [next(g) for x in range(3)]
Это «ручной» способ сделать это. Вы можете также использовать функцию islice
из модуля (Documentation here)itertools
:
import itertools
results = list(itertools.islice(g, 4))
И там. Генераторы очень полезны. Блок кода, который выполняется при запросе и запоминании его состояния, действительно бесценен.
Угловые скобки: '<>'. '[]' Одни называются квадратными скобками или просто скобками в зависимости от того, откуда вы. – user2357112
@ user2357112: очень верно, спасибо – user357269