在 python 中的列表列表中查找最小值

问题描述 投票:0回答:2

我有这个巨大的值列表,看起来像这样但要大得多:

代码:

score= [
    [[0, 0, 0, 0], [0, 0], [0.14139999999999997]],
    [[0, 0, 0, 0], [0, 0], [0.19199999999999973]],
    [[0, 0, 0, 0], [0, 0], [0.1520999999999999]],
    [[0, 0, 0, 0], [0, 0.13030000000000008], [0]],
    [[0, 0, 0, 0], [0, 0.06330000000000036], [0]],
    [[0, 0, 0, 0], [0, 0.0021999999999997577], [0]],
    [[0, 0, 0, 0], [0.11419999999999986, 0], [0]],
    [[0, 0, 0, 0], [0.1459999999999999, 0], [0]],
    [[0, 0, 0, 0], [0.1772999999999998, 0], [0]],
    [[0, 0, 0, 0.16239999999999988], [0, 0], [0]],
    [[0, 0, 0, 0.1676000000000002], [0, 0], [0]],
    [[0, 0, 0.15149999999999997, 0], [0, 0], [0]],
    [[0, 0, 0.11219999999999963, 0], [0, 0], [0]],
    [[0, 0.023299999999999876, 0, 0], [0, 0], [0]],
    [[0, 0.06959999999999988, 0, 0], [0, 0], [0]],
    [[0.010500000000000398, 0, 0, 0], [0, 0], [0]],
    [[0.008799999999999919, 0, 0, 0], [0, 0], [0]]
]

best_score = min(score, key=lambda row: row[-1])
print(best_score)

我需要在每个位置上获得最小(非零)值的行,意思是这样的: 我试图用 min 函数找到它,但这给了我奇怪的结果..

python list min
2个回答
0
投票

也许这有助于您入门:

min_value = min([x for y in [num for sublist in score for num in sublist] for x in y if x != 0])
for row in score:
    if min_value in [num for sublist in row for num in sublist]:
        print(row)

印花:

[[0, 0, 0, 0], [0, 0.0021999999999997577], [0]]

-2
投票

你试过使用 min() 函数吗?

© www.soinside.com 2019 - 2024. All rights reserved.