我需要在列表中找到最小的值。该列表具有包含元组的子列表。我需要在所有这些元组中找到最小的值,但它只能包含前3个值。我设法用下面的代码实现了,但我希望它看起来更干净
lst = [[(1, 2, 3, 50)], [(0.2, 0.4, 2, 0.1)], [(0.6, 0.8, 1.2, 0.05)]]
def FitScoreSearch3(fitscores):
fitscores2 = []
for x in fitscores:
for y in x:
for z in y[:3]:
fitscores2.append(z)
return min(fitscores2)
输出应为0.2。输出不能为0.05
min([value for sublist in lst for value in sublist[0][:3]])
子列表是否总是只包含一个元组?如果是,
如果允许子列表包含多个元组:
在这两种情况下,这会将循环替换为生成器表达式。此外,上面的方法不是将所有数字收集到一个大列表中,然后再执行
min()
,而是首先计算元组上的min()
(或者更确切地说是元组的前3个元素),然后将全局最小值计算为所有这些“子最小值”的min()
。由于这不会创建额外的数据结构,因此速度更快在此代码中,lst2包含每个元组前3个元素的所有值
相关问题 更多 >
编程相关推荐