我在Python中有一个元组列表,比如说
a = [('foo', 3), ('bar', 1)]
我希望修改包含'foo'
的元组中的第二个元素。更具体地说,我想增加这个数字。换句话说,我想做
>>> increment(a, 'foo')
>>> print a
[('foo', 4), ('bar', 1)]
答案 0 :(得分:1)
您不能直接在元组中更改值(元组是不可变的)。但是,您可以使用看起来与旧元组非常相似的新元组替换元素:
def increment(a, name):
for i, x in enumerate(a):
if x[0] == name:
a[i] = (x[0], x[1] + 1)
break
答案 1 :(得分:0)
正如我在评论中提到的,在这种情况下你无法改变元组的内容,所以要回答问题标题中提出的问题(并在该索引处替换整个元组,如果有的话,实测值):
a = [('foo', 3), ('bar', 1)]
def find_index(name, seq):
for i, tpl in enumerate(seq):
if tpl[0] == name:
return i
return None
i = find_index('foo', a)
if i is not None:
a[i] = a[i][0], a[i][1]+1
print(a)
输出:
[('foo', 4), ('bar', 1)]