将常量元组值添加到元组列表中

时间:2010-02-24 13:42:34

标签: python

我有一个元组列表(每个元组项是一对整数),我想为列表中的每个元组添加一个常量值。

例如 [(x0,y0),(x1,y1),...] - > [(x0 + xk,y0 + yk),(x1 + xk,y1 + yk)....]

xk,yk是常数

我该怎么做

由于

5 个答案:

答案 0 :(得分:4)

使用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]]

答案 1 :(得分:3)

>>>> 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]

答案 2 :(得分:3)

您不能向元组添加常量,因为元组是不可变的。

然而,您可以通过递增它的值来创建旧元组。有关如何执行此操作的基础知识,请参阅jae的答案。

但是你应该注意到,你将在这个循环中创建许多新的元组,这可能不是一个非常有效的方法来处理它。您应该调查numpy(由nikow建议)或者可能使用列表或坐标对象而不是元组。

答案 3 :(得分:0)

向元组添加内容的示例

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

您可以根据您的要求进行调整

答案 4 :(得分:0)

解决方案:

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)]