質問

anで作成されたリストがあります itertools.groupby 手術:

def yield_unpacked_list():
    for key, grp in itertools.groupby(something_to_groupby, key=lambda x: x[0]):
        subset_of_grp = list(item[2] for item in list(grp))
        yield key, subset_of_grp

たとえば、 subset_of_grp であることが判明 [1, 2, 3, 4][5, 6, 7, 8]:

for m in yield_unpacked_list():
    print m

印刷する:

('first_key', [1, 2, 3, 4])
('second_key', [5, 6, 7, 8])

さて、私の関数定義に戻ります。明らかに、次のものは構文エラーです( * オペレーター):

def yield_unpacked_list():
    for key, grp in itertools.groupby(something_to_groupby, key=lambda x: x[0]):
        subset_of_grp = list(item[2] for item in list(grp))
        yield key, *subset_of_grp

次の結果が欲しいです 同じ print ループなしでループ [list] ブラケット:

('first_key', 1, 2, 3, 4)
('second_key', 5, 6, 7, 8)

ご了承ください print ここでは説明のためにのみです。単純化されたものから利益を得る他の機能があります tuple 構造。

役に立ちましたか?

解決

yield (key,) + tuple(subset_of_grp)

他のヒント

def yield_unpacked_list():
    for key, grp in itertools.groupby(something_to_groupby, key=lambda x: x[0]):
        yield (key,) + tuple(item[2] for item in grp)

印刷をしたい結果から、あなたが譲りたいことは明らかです tuple - 代わりにそれを「アンパックされたリスト」と呼ぶ理由はわかりませんが、とにかく、あなたはそこにいます。また、いくつかの電話を削除しました list それはあなたのコードではまったく有用な役割を果たさなかっただけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top