#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
цикл в своем коде.