我需要在新列表中查找并存储主列表的每个子列表中的最小值。这就是我到目前为止所做的:
# 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()
与我最初的方法相比,DSM是最快的解决方案,大约是5倍,其他两个大约需要28倍。所有这些都是很好的解决方案,但由于性能的原因,我将DSM标记为可接受的答案。谢谢大家!
答案 0 :(得分:3)
只需使用列表推导和min
函数
[min(x) for x in list_a]
答案 1 :(得分:3)
由于标记为numpy
,如果您的list_a
具有矩形形状,则可以使用numpy
函数。
例如:
>>> np.min(list_a, axis=1)
array([ 0.2, 0.1, 0.3, 0.2])
或者,为避免重复转化,请将其设为array
:
>>> b = np.array(list_a)
>>> b.min(axis=1)
array([ 0.2, 0.1, 0.3, 0.2])
答案 2 :(得分:2)