web-dev-qa-db-ja.com

タプルのリストを反復する

私は、それぞれが[(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)
14
Clev3r

リストのタプルを置き換えるだけです。あなた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]
29
Martijn Pieters

リストを理解するのではなく、リストを理解してみませんか?

new_list = [(a,new_b) for a,b in Tuple_list]
4
Udo Klein

ここにいくつかのアイデアがあります:

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 ]
0