преобразование в понимание списка
У меня есть этот код:
result = [] for x in [10, 20, 30]: for y in [2, 3, 4]: if y > 0: result.append(x ** y)
результат
[100, 1000, 10000, 400, 8000, 160000, 900, 27000, 810000]
Я пытаюсь преобразовать его в понимание списка без везения (новое в python)
Это моя попытка:
print [ x ** y if y > 0 for x in [10, 20, 30] for y in [2, 3, 4]]
Но в заявлении есть проблема, любая помощь будет наиболее подходящей.
ошибка:
File "<stdin>", line 1 print [ x ** y if y > 0 for x in [10, 20, 30] for y in [2, 3, 4]] ^ SyntaxError: invalid syntax
- Python: разбить список длины n на таблицу или другие списки, по типу, порядок сохранения
- Как вернуть ничего для разрезания списка Python
- проверить условие для всех элементов в двух списках в python
- Как составить представление списка с помощью метода group () в python?
- Фильтрация списка Python: удаление подмножеств из списка списков
Условие фильтрации должно быть в конце, как это
print [x ** y for x in [10, 20, 30] for y in [2, 3, 4] if y > 0]
потому что грамматика для понимания списка определяется следующим образом:
list_display ::= "[" [expression_list | list_comprehension] "]" list_comprehension ::= expression list_for list_for ::= "for" target_list "in" old_expression_list [list_iter] list_iter ::= list_for | list_if list_if ::= "if" old_expression [list_iter]
Таким образом, только выражения могут появляться перед for..in
и if
утверждение может прийти только после этого.
В вашем случае expression
выполняется x ** y
а затем list_for
выполняется for x in [10, 20, 30]
а затем другой list_for
выполняется for x in [10, 20, 30]
и, наконец, list_if
удовлетворяют условию if y > 0
. Он имеет вид
[ expression list_for list_for list_if ]
Кстати, вы можете сделать то же самое с itertools.product
, как это
from itertools import product print [num**power for num,power in product([10, 20, 30], [2, 3, 4]) if power > 0]
Вам нужно выражение if в конце понимания списка
print [ x ** y for x in [10, 20, 30] for y in [2, 3, 4] if y > 0]
Помните этот синтаксис для понимания. '{}' для понимания dict
[ expression for target1 in iterable1 if condition1 for target2 in iterable2 if condition2 ... for targetN in iterableN if conditionN ]
- Присоединение нескольких списков к единой структуре данных
- Итерация над списком Python, сохранение структуры встроенных списков
- Добавить элемент в указанный список в списке списков (Python)
- Объединяя слова вместе с запятой, и "и"
- Как преобразовать эту строку в список списков?
- Добавление строки в строку в списке
- list.extend и понимание списка
- Самый быстрый способ найти общие элементы в начале 2 списков python?
- Сумма из нескольких списков индексов