15

それぞれがそのようなペアであるタプルのリストを反復処理するためのクリーンな方法を探してい[(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)
4

3 に答える 3

33

リスト内のタプルを置き換えるだけです。要素の追加または削除を回避する限り、リストをループしながら変更できます。

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]
于 2013-02-14T17:09:59.420 に答える
4

リストを変更するのではなく、リスト内包表記を試してみませんか?

new_list = [(a,new_b) for a,b in tuple_list]
于 2013-02-14T17:09:56.820 に答える
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 ]
于 2013-02-14T17:10:08.177 に答える