Мне нужно выбрать значения куба от 1 до 100 - PullRequest
0 голосов
/ 28 сентября 2019
cubos = [valor**3 for valor in range(1,101)]#creates a list the cubes from 1 to 100
for cubo in cubos:#loop and create the internal values
    if cubo >= 100:#pick the values bigger then 100
        del cubo #delete them
print (cubos)#print the values lower then 100

почему не работает, я хочу, чтобы он работал, если он работает, но просто не печатает список, как это было без каких-либо изменений

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Создайте все кубики, затем выберите те, которые меньше 100.

from itertools import takewhile, count

cubes1to100 = list(takewhile(lambda x: x <= 100, map(lambda x: x**3, count())))

Разбив:

  1. count() производитбесконечный поток целых чисел 0, 1, 2, ....
  2. map(lambda x: x**3, count()) создает бесконечный поток кубов 0, 1, 8, 27, 64, 125, ....
  3. takewhile(...) создает конечный поток кубов, меньший 100, получая только те значения из map, которые меньше или равны 100.
  4. list, наконец, создает список из повторяемоговозвращается takewhile.

Все итераторы ленивы, поэтому x ** 3 вычисляется только 6 раз, как и x <= 100.

0 голосов
/ 28 сентября 2019

Вы также можете использовать cubos.remove(cubo) вместо del cubo.

Код будет выглядеть так:

if cubo >= 100:
   cubos.remove(cubo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...