Итерировать список кортежей
Я ищу чистый способ перебирать список кортежей, где каждая из них представляет собой пару, например [(a, b), (c,d) ...]
. Кроме того, я хотел бы изменить кортежи в списке.
Стандартная практика заключается в том, чтобы избежать изменения списка, а также итерации через него, так что мне делать? Вот что я хочу:
for i in range(len(tuple_list)):
a, b = tuple_list[i]
# update b data
# update tuple_list[i] to be (a, newB)
Ответы
Ответ 1
Просто замените кортежи в списке; вы можете изменять список, перебирая его, если вы не добавляете или не удаляете элементы:
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]
Ответ 2
Почему бы вам не пойти на понимание списка, а не изменить его?
new_list = [(a,new_b) for a,b in tuple_list]
Ответ 3
вот несколько идей:
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 ]