我正在寻找一种干净的方法来迭代一个元组列表,其中每个都是像[(a, b), (c,d) ...]
那样的一对。最重要的是,我想改变列表中的元组。
标准做法是避免更改列表,同时也要迭代它,所以我该怎么办?这就是我想要的东西:
for i in range(len(tuple_list)):
a, b = tuple_list[i]
# update b's data
# update tuple_list[i] to be (a, newB)
答案 0 :(得分:29)
只需替换列表中的元组即可;只要您避免添加或删除元素,可以在循环时修改列表:
for i, (a, b) in enumerate(tuple_list):
new_b = some_process(b)
tuple_list[i] = (a, new_b)
或者,如果您可以像上面那样将b
的更改汇总到函数中,请使用列表推导:
tuple_list = [(a, some_process(b)) for (a, b) in tuple_list]
答案 1 :(得分:4)
为什么不进行列表理解而不是改变它?
new_list = [(a,new_b) for a,b in tuple_list]
答案 2 :(得分:0)
这里有一些想法:
def f1(element):
return element
def f2(a_tuple):
return tuple(a_tuple[0],a_tuple[1])
newlist= []
for i in existing_list_of_tuples :
newlist.append( tuple( f1(i[0]) , f(i1[1]))
newlist = [ f2(i) for i in existing_list_of_tuples ]