私は、それぞれが[(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)
リストのタプルを置き換えるだけです。あなたcan要素を追加または削除しない限り、ループ中にリストを変更します。
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]
リストを理解するのではなく、リストを理解してみませんか?
new_list = [(a,new_b) for a,b in Tuple_list]
ここにいくつかのアイデアがあります:
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 ]