У меня есть список кортежей (каждый элемент кортежа представляет собой пару целых чисел), и я хотел бы добавить постоянное значение для каждого кортежа в списке.
Например [(x0, y0), (x1, y1), ...] -> [(x0 + xk, y0 + yk), (x1 + xk, y1 + yk) ....]
xk, yk являются постоянными
Как мне это сделать
Спасибо
Использование 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]]
Вы не можете добавить константу в кортеж, потому что кортежи неизменны.
Однако вы можете создать новый кортеж из старого, увеличив его значения. См. Ответ Чже для основ, как это сделать.
Однако вы должны заметить, что в этом цикле вы будете создавать много новых кортежей, и это может быть не очень эффективным способом обработки этого. Вы должны исследовать numpy (как предлагает nikow) или, возможно, использовать списки или координатные объекты вместо кортежей.
>>>> 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]
Решение:
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)]
пример добавления вещей в кортеж
>>> a=(1,2) >>> a+=(1,) >>> a (1, 2, 1)
вы можете адаптировать его к вашему требованию