到內部列表的第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
在這之後我使用如下lambda函數過濾掉名稱第二低的得分手,
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(nlogn)排序而不是自定義的O(n)函數? (當然,這可能是非常好的原因,但也許這只是不必要的微觀優化。) –