我试图将新数据分配给现有元组,但它不起作用。实际上我想添加a和b来获得总和,但是只能迭代字符串..
A=[('3', '4'), ('3', '11'), ('8', '10')]
print A
for a,b in A:
a,b = int(a), int(b)+int(a)
print A
结果:
[('3','4'),('3','11'),('8','10')]
[('3','4'),('3','11'),('8','10')]
答案 0 :(得分:6)
当您设置a, b = int(a), int(b)+int(a)
时,您不会更改实际对象a
和b
来自;你只需将新对象绑定变量a和b ......
您可以创建一个新列表B,并填充它:
A=[('3', '4'), ('3', '11'), ('8', '10')]
print A
B = []
for a, b in A:
B.append((int(a), int(b) + int(a)))
print B
答案 1 :(得分:4)
您可以使用列表理解:
>>> [(int(i), int(i) + int(j)) for i, j in A]
[(3, 7), (3, 14), (8, 18)]
答案 2 :(得分:0)
元组是不可变的。此外,您正在为for循环中的a,b分配新值,而对这些新值不执行任何其他操作。
http://docs.python.org/library/functions.html#tuple http://en.wikipedia.org/wiki/Immutable_object
答案 3 :(得分:0)
您可以使用“枚举”来获取索引并将其写回列表,而不是根据amit的答案创建新列表,我想您正在尝试做什么。
enumerate()实际上返回了iterable中当前位置的元组,然后是值,这样你就可以做到:
for idx, (a, b) in enumerate(A):
A[idx] = (int(a), int(b) + int(a))