を使用して内側のリストの0番目の要素を格納することはできませんよ、私は以下のようにネストされたリストを持っている:私は、ネストされたリストでフィルタ機能を使用しようとしていますが、私はフィルタ機能
students = [['Jagan', 65.5], ['Kiran', 55.45], ['Maddy', 47.2], ['Harsha', 75.0], ['Pavy', 55.45]]
私はの名前をフィルタリングするために、以下のようにラムダ関数を使用しています
def second_lowest(l):
small, second_small = float('inf'), float('inf')
for number in l:
if number[1] <= small:
small, second_small = number[1], small
elif number[1] < second_small:
second_small = number[1]
return second_small
れた後、私は第一、第二の最低数を調べるには、以下の機能を使用していたために二番目に低い得点を把握しようとしています2番目に低いスコアラー、
sl = second_lowest(students)
names = filter(lambda x: x[0] if (x[1] == sl) else None, students)
print names
私はXを使用していますように、出力は名前だけでなければなりません期待してい[0]の式ではなく、以下のように私は、全体のリストを取得しています:
[['Kiran', 55.45], ['Pavy', 55.45]]
で埋めるリストを取得します。その戻り値は、元のシーケンスのどの要素がフィルタを通過するかを決定します。基本的にはTrueまたはFalseを返すべきですが、空でない文字列とNoneのような真理値があります。結果の上にたとえば 'itemgetter(0)'をマップするか、フィルタリングの後にリストの理解を使用する必要があります。 –
カスタムO(n)関数の代わりにO(nlogn)ソートを使用しない特別な理由はありますか? –