我有这个巨大的值列表,看起来像这样但要大得多:
代码:
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 函数找到它,但这给了我奇怪的结果..
也许这有助于您入门:
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]]
你试过使用 min() 函数吗?