1

次の形式のタプルのリストがあります。

my_list = [(a,b),(c,d),(e,f)]

各タプルの2番目のメンバーに何かしたいです。古いリストは必要ありませんが、新しいリストを作成する必要がある場合は問題ありません。

これは私が今していることです:

new_list = []
for x,y in my_list:
    new.list.append((x,my_function(y)))

これは機能しますが、ぎこちなく感じます。それは最良/最もPythonic/最速の方法ですか?

4

2 に答える 2

5

リスト内包表記を使用して、新しいタプルを生成します。

new_list = [(x, my_function(y)) for x, y in my_list]

これはあなたのバージョンと同じになりますが、繰り返しの.append()呼び出しを避け、一度にリストを作成します。

于 2013-10-17T19:58:00.513 に答える
4

リスト内包表記を使用すると、通常はよりクリーンになります。

[(x, function(y)) for x,y in my_list]

その後、選択した場合は、書き戻すmy_listか、新しい変数名を付けることができます。

my_list = [(x, function(y)) for x,y in my_list]

または、代わりに置き換えるためにスライスの割り当てを行うこともできますmy_list:

my_list[:] = [(x, function(y)) for x,y in my_list]
于 2013-10-17T19:57:57.770 に答える