有没有办法在列表中的元组的第一部分添加数字?

时间:2013-11-22 03:23:08

标签: python list tuples

所以我有一个列表例如:

a = [(1,2),(2,3)]

我想知道是否有办法添加一个数字,让我们说2元组的第二部分,所以它看起来像

a = [(1,4),(2,5)]

5 个答案:

答案 0 :(得分:3)

您可以使用list comprehension

>>> a = [(1,2),(2,3)]
>>> [(x, y+2) for x,y in a]
[(1, 4), (2, 5)]
>>>

答案 1 :(得分:2)

您已经获得了有关如何使用tuple执行此操作的答案。但是如果你知道你将修改它们,你应该考虑一个不可变类型是否是正确的选择

如果你有一个list list,那么比较工作(cpu明智)

>>> a = [[1,2],[2,3]]
>>> for i in a: i[1] += 2
... 
>>> a
[[1, 4], [2, 5]]

因为您不需要创建一个全新的数据结构并将值复制到其中以进行修改

如果numpy数组是一个合适的选择,那么广播添加

就更容易了
>>> import numpy as np
>>> a = np.array([(1,2), (2,3)])
>>> a[:, -1] += 2
>>> a
array([[1, 4],
       [2, 5]])

答案 2 :(得分:0)

您可以使用列表理解:

a = [(1,2), (2,3)]
a = [(x, y+2) for (x,y) in a]

给出

a = [(1,4),(2,5)]

答案 3 :(得分:0)

您可以使用map函数生成具有所需值的新元组。这篇文章讨论了地图功能。您还可以谷歌地图功能编程。

Using python map and other functional tools

答案 4 :(得分:0)

元组是不可变的,因此一旦创建它们就无法修改它们。但是,您可以使用不同的元组替换列表中的元组,其值基于第一个,如下所示:

for i, tup in enumerate(list_of_tuples):
    list_of_tuples[i] = (tup[0], tup[1]+2)

另一种解决方案是使用基于原始列表中元组的值创建一个新列表。这是一个列表推导,它将现有列表中每个元组的第二个值创建一个新的元组列表:

new_list = [(a, b+2) for a, b in orig_list]