2013-03-23 2 views
0

пытается перестроить список списков, содержащих координаты.python, перестраивающие списки

, что я получил это

sel = ((0, 0), (0, 1), (1, 1), (1, 0)) 
sel = [(1 - v[1]) for v in sel] 

, который делает то, что я хочу, чтобы 2-й координаты в каждом наборе, но моя проблема в том, что возвращает в виде списка значений, а не список списков с 2-го значения изменено.

im делать это, так как система координат для двух разных приложений, с которыми работает, отличается. С одним 0 находится в нижней части оси оси, а с другой, которую im пытается конвертировать слишком 0, начинается в верхней части оси y.

ответ

1

Прямо сейчас, каждый элемент в вашем понимании списка - это (1-v[1]), что и должно произойти со вторым значением. Если вы хотите, чтобы каждый элемент будут кортеж, где первый член в кортеже является таким же, как это было раньше, но второй изменяются, вы можете сделать это:

>>> sel = ((0, 0), (0, 1), (1, 1), (1, 0)) 
>>> sel = [(v[0], 1 - v[1]) for v in sel] 
>>> sel 
[(0, 1), (0, 0), (1, 0), (1, 1)] 

Вы также могли бы избежать использования индексов , который иногда может использоваться для более чистого кода (здесь примерно то же самое):

>>> sel = [(x, 1-y) for x,y in sel] 
>>> sel 
[(0, 1), (0, 0), (1, 0), (1, 1)] 
+0

спасибо, я знал, что забыл про что-то подобное. – cmcPasserby