Добавление постоянного значения кортежа в список кортежей - PullRequest
1 голос
/ 24 февраля 2010

У меня есть список кортежей (каждый элемент кортежа представляет собой пару целых чисел), и я хотел бы добавить постоянное значение для каждого кортежа в списке.

Например [(x0, y0), (x1, y1), ...] -> [(x0 + xk, y0 + yk), (x1 + xk, y1 + yk) ....]

xk, yk являются постоянными

Как мне это сделать

Спасибо

Ответы [ 5 ]

4 голосов
/ 24 февраля 2010

Использование numpy , например,

>>> import numpy as np
>>> a = np.array([[1,2],[2,3]])
>>> print a
[[1 2]
 [2 3]]
>>> print a + 2
[[3 4]
 [4 5]]
3 голосов
/ 24 февраля 2010

Вы не можете добавить константу в кортеж, потому что кортежи неизменны.

Однако вы можете создать новый кортеж из старого, увеличив его значения. См. Ответ Чже для основ, как это сделать.

Однако вы должны заметить, что в этом цикле вы будете создавать много новых кортежей, и это может быть не очень эффективным способом обработки этого. Вы должны исследовать numpy (как предлагает nikow) или, возможно, использовать списки или координатные объекты вместо кортежей.

3 голосов
/ 24 февраля 2010
>>>> l = [(1,2), (3,4)]
>>>> for i, e in enumerate(l):
....     l[i] = (e[0]+xk, e[1]+yk)

Как всегда, не проверено. ; -)

Если вам не нужно делать это на месте, это еще проще

>>>> l = [(e[0]+xk, e[1]+yk) for e in l]
0 голосов
/ 24 февраля 2010

Решение:

l = [(i[0]+k[0], i[1]+k[1]) for i in l]

Тестовый код:

l = [(1,2), (3,4)]
k = (10, 100)
l = [(i[0]+k[0], i[1]+k[1]) for i in l]
assert l == [(11, 102), (13, 104)]
0 голосов
/ 24 февраля 2010

пример добавления вещей в кортеж

>>> a=(1,2)
>>> a+=(1,)
>>> a
(1, 2, 1)

вы можете адаптировать его к вашему требованию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...