вложенный список с несколькими условиями

#python #nested-lists

Вопрос:

Попытка создать список кортежей примерно так:

  m=[-1,0,1]
 [(self._x x,self._y) for x in m for y in m]
 

Но я хочу исключить кортеж, когда и x, и y равны 0. Я пытался:

 [(self._x x,self._y) for x in m for y in m if x!=0 and y!=0]
 

но это не работает.

Спасибо.

Комментарии:

1. Это не создает вложенные списки, это просто создает один список. Если вам нужны вложенные списки, вам нужно понимание вложенных списков.

2. @Бармар, Ты прав

Ответ №1:

 m = [-1, 0, 1]

# so you want all combinations x and y out of m 
# but only if x and y are not both 0 at the same time?
[ (x, y) for x in m for y in m if not (x == 0 and y == 0) ]
## =>  [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]

 

Проблема вашего кода заключается self. в том, что — это происходит только в определениях классов.
self._x x это x из цикла for плюс определенное self._x значение, что бы это ни было. self._y это не y.
Чего ты на самом деле хочешь от этого? вы вообще не используете y второй for цикл в своем коде.