如何选择一个数组中不出现在另一个使用一行的最小值?


nearest_distance_table = [1,4,5,9,10,14,15]
nodes_explored = [2,10,14]

我想将变量next赋值给不在nodes_explored中的nearest_distance_table的最小值。是否有使用min()的一行代码来完成此操作?我知道如何使用for循环来做到这一点,但是有一种方法可以用min()一行来做到这一点吗?

使用for循环:

minimum = float("inf")
for I in nearest_distance_table: 
if I < minimum and I not in nodes_explored: 
minimum = I
print(I)

您可以像下面这样使用推导式

nearest_distance_table = [1,4,5,9,10,14,15]
nodes_explored = [2,10,14]
minimum = min(i for i in nearest_distance_table if i not in nodes_explored)
print(minimum)

输出
1

您可以将列表转换为集合:

lowest = min(set(nearest_distance_table).difference(nodes_explored))

注意,如果您想保留重复的值,这将不起作用。例如,

nearest_distance_table = [2, 2, 4]
nodes_explored = [2]

将给出4作为答案,因为两个2s将被折叠成一个值,然后被删除。这与您的示例中的行为相同。

相关内容

最新更新