假设我有形式的元组
[(('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循环中执行此操作。但我正在寻找更短的方法。
附:您可以创建新元组
答案 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)]