Skip to main content
 首页 » 编程设计

python之迭代地在子列表中找到最小值

2025年05月04日13tintown

我需要找到主列表的每个子列表中的最小值并将其存储在新列表中。这是我目前所拥有的:

# Main list. 
list_a = [[0.2,0.4,0.6,1.1], [1.2,0.1,0.7,0.9], [0.3,0.5,0.9,0.7], [0.5,0.2,0.6,0.3]] 
 
# List that stores all the minimum values. 
list_b = [] 
 
# Iterate through all sub-lists in main list. 
for sub_list in list_a: 
    # Identify minimum value in sub-list. 
    min_val = np.argmin(sub_list) 
    # Store this minimum value in list_b. 
    list_b.append(sub_list[min_val]) 

这样,list_b 将如下所示:

print list_b 
[0.2, 0.1, 0.3, 0.2] 

是否有更高效/pythonic 的方式来做到这一点?


答案

我检查了1_CR、Haidro 和DSM 给出的答案。与我最初对这个问题的建议相比,他们根据 time.time() 排名如下:

  • 0.00774312019348,我的代码
  • 0.0201649665833, 1_CR
  • 0.0234789848328, 海德罗
  • 0.0014910697937,帝斯曼

与我原来的方法相比,DSM 是最快的解决方案,快了约 5 倍,而其他两个解决方案的时间延长了约 28 倍。所有这些都是很好的解决方案,但由于性能,我将 DSM 标记为可接受的答案。谢谢大家!

请您参考如下方法:

因为它被标记为 numpy,如果您的 list_a 是矩形,您可以使用 numpy 函数。

例如:

>>> np.min(list_a, axis=1) 
array([ 0.2,  0.1,  0.3,  0.2]) 

或者,为避免重复转换,将其设为数组:

>>> b = np.array(list_a) 
>>> b.min(axis=1) 
array([ 0.2,  0.1,  0.3,  0.2])