51

タプルのリストをリストのリストに変換するこの関数を作成しました。これを行うためのよりエレガントな/Pythonicな方法はありますか?

def get_list_of_lists(list_of_tuples):
    list_of_lists = []                                                          
    for tuple in list_of_tuples:
        list_of_lists.append(list(tuple))

    return list_of_lists
4

2 に答える 2

76

リスト内包表記を使用できます:

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> list_of_lists = [list(elem) for elem in list_of_tuples]

>>> list_of_lists
[[1, 2], [4, 5]]
于 2013-02-12T11:48:25.277 に答える
24

リスト内包表記は完全に有効な答えですが、タイプを変更しているだけなので、代替map()組み込みの:を検討する価値があるかもしれません。

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> map(list, list_of_tuples)
[[1, 2], [4, 5]]

map()ビルトインは、指定されたiterableの各要素にcallableを適用するだけです。これは、この特定のタスクに適しています。map()一般に、リスト内包表記は(必要に応じて複雑なことを行う場合はlambda)より読みやすく効率的ですが、タイプを単純に変更したい場合は、map()非常に明確で迅速に行うことができます。

ここでは2.xを使用しているので、リストを取得します。3.xでは反復可能(怠惰です)を取得します。3.xでリストが必要な場合は、単に実行してくださいlist(map(...))。あなたがあなたの使用のために反復可能で大丈夫なら、2.xitertools.imap()で怠惰を提供します。map()

于 2013-02-12T11:50:30.037 に答える