2017-05-15 7 views
0

から最大なく、ポップ、すべて私が数千のエントリとその値までのリストを持っている:パイソン、リスト

lst = [ 
    [entry1, [value1, value2, value3]], 
    [entry2, [value4, value5, value6, value7]], 
    ... 
] 

は、各エントリの値から最大値以外のすべてをポップする必要があります。

スムーズな方法がわかりますか?ありがとう!

+0

はあなたの努力を示しています。不明瞭なことは、 'entry1'とは何か、スカラー値、タプル、ディクト? – RomanPerekhrest

+0

また、ここでは辞書がより適切と思われます( 'entry1、..、entryn')が一意です。 – DeepSpace

+0

辞書は私の最初のアイデアでした。しかし、Py3では後で値のインデックスを作ることができないので、それを落としてしまいました。エントリはint型ですが、必ずしもそうではありません。値は浮動小数点型です。 – Jewenile

答えて

8

は、ポップリストを交換しないでください:

lst = [[entry, [max(values)]] for entry, values in lst] 

これは、新しいものとリスト全体を置き換えます。変更を確認するために必要なすべてのものをサブリストへの既存の参照を持っている場合は、あなたがforループの中で、それぞれの[:]スライスに割り当てることができます:

for _, values in lst: 
    values[:] = [max(values)] 
+0

ありがとうございます。良い一日を! – Jewenile