Понятия в Python к выборке кортежей из списка

Я пытаюсь получить список трехэлементных кортежей из списка [-4, -2, 1, 2, 5, 0] с использованием понятий и проверить, выполняют ли они условие sum([] == 0) . Следующий код работает. Однако нет сомнений в том, что должен быть более простой, более элегантный способ выражения этих понятий:

 [ (i, j, k) for i in [-4, -2, 1, 2, 5, 0] for j in [-4, -2, 1, 2, 5, 0] for k in [-4, -2, 1, 2, 5, 0] if sum([i, j, k]) == 0 ] 

Вывод:

 [(-4, 2, 2), (-2, 1, 1), (-2, 2, 0), (-2, 0, 2), (1, -2, 1), (1, 1, -2), (2, -4, 2), (2, -2, 0), (2, 2, -4), (2, 0, -2), (0, -2, 2), (0, 2, -2), (0, 0, 0)] 

Вопрос заключается в поиске выражения типа (i, j, k) for i, j, k in [-4, -2, 1, 2, 5, 0] .

One Solution collect form web for “Понятия в Python к выборке кортежей из списка”

Вы можете использовать itertools.product чтобы скрыть вложенные циклы в вашем понимании списка. Используйте параметр repeat чтобы установить количество циклов над списком (т. Е. Количество элементов в кортеже):

 >>> import itertools >>> lst = [-4, -2, 1, 2, 5, 0] >>> [x for x in itertools.product(lst, repeat=3) if sum(x) == 0] [(-4, 2, 2), (-2, 1, 1), (-2, 2, 0), (-2, 0, 2), (1, -2, 1), (1, 1, -2), (2, -4, 2), (2, -2, 0), (2, 2, -4), (2, 0, -2), (0, -2, 2), (0, 2, -2), (0, 0, 0)] 
  • Учет списков в Python: установите все элементы в массиве в 0 или 1
  • Как математически вычитать элементы в двух списках на Python и выводить только те элементы, которые соответствуют условию?
  • Как удалить смежные повторяющиеся элементы в списке, используя списки?
  • Почему понимание списка намного быстрее, чем numpy для умножения массивов?
  • список вызовов функции, использующей понимание списка
  • Дублирующий элемент в списке python
  • Что означает «понимание списка»? Как это работает и как я могу его использовать?
  • понимание списка python для создания двух значений на одной итерации
  • Python - лучший язык программирования в мире.