如何在python中增加元组内部?

时间:2015-05-29 01:34:03

标签: python python-3.x

假设我有形式的元组
[(('d',0),('g',0)),(('d',0),('d',1)),(('i',0),('g',0))]
那么如何增加元组内部的数字形式: -
[(('d',1),('g',1)),(('d',1),('d',2)),(('i',1),('g',1))]

我可以在一个for循环中执行此操作。但我正在寻找更短的方法。
附:您可以创建新元组

3 个答案:

答案 0 :(得分:8)

列表理解将起到作用:

>>> t = [(('d',0),('g',0)),(('d',0),('d',1)),(('i',0),('g',0))] 

>>> print [tuple((a, b+1) for a, b in group) for group in t]

   [[('d', 1), ('g', 1)], [('d', 1), ('d', 2)], [('i', 1), ('g', 1)]]

答案 1 :(得分:1)

您无法更改元组中的值,元组是不可变的。您需要将它们作为列表或使用您想要的值创建一个新元组并存储它。

答案 2 :(得分:1)

这是最不具有pythonic的方式,但最具说明性。

拆分成列表,将值添加到整数列表中,然后将它们压缩回来:

valued = []
lettered = []
plusone = []
listed = [(('d',0),('g',0)),(('d',0),('d',1)),(('i',0),('g',0))]
for x,y in listed:
    for subx, suby in x,y:
        valued.append(int(suby))
        lettered.append(subx)
for value in valued:
    value = value + 1
    plusone.append(int(value))
#print plusone
coolness = zip(lettered,plusone)
print coolness
exit()

结果如下: [('d', 1), ('g', 1), ('d', 1), ('d', 2), ('i', 1), ('g', 1)]