2024-05-16 23:48:51 发布
网友
min(range(len(a)), key=lambda i: abs(a[i]-11.5))
我不明白。请帮帮我。你知道吗
如果a至少包含一个元素,则它相当于以下代码:
a
def stupid_verbose_imperative_code(): import math i = 0 result = None min_key = math.inf while i < len(a): key = abs(a[i]-11.5) if key < min_key: min_key = key result = i i += 1 return result stupid_verbose_imperative_code()
如您所见,掌握python标准库大大减少了输入代码的需要
Python内置的^{}返回某个iterable中的最小参数。然而,由于python2.5,它还需要一个key参数,这个函数用来计算iterable中的元素。你知道吗
key
传递给key的参数是如何计算集合中的每个元素x,如argument(x)。传递一个lambda,一个匿名函数,它计算lambda i: abs(a[i]-11.5),也就是说,对于每个索引,它在该索引处取a中的值,并计算a[i] - 11.5的绝对值。这是因为您将a的索引传递给min函数,因为range(len(a))正是该集合(它是从0到len(a)的范围,以1为步)。你知道吗
x
argument(x)
lambda
lambda i: abs(a[i]-11.5)
a[i] - 11.5
min
range(len(a))
0
len(a)
1
综上所述,您得到的是a中元素的索引,它在绝对距离上最接近11.5。你知道吗
11.5
min返回iterable中的最小值。您可以选择提供一个key函数,在进行比较之前应用于iterable。你知道吗
这里iterable是一个生成器,它将数字0返回到iterable的长度a。你知道吗
应用于iterable的每个元素的键函数获取该元素并使用它索引到a。然后从这个值减去11.5,取绝对值。你知道吗
总的来说,它返回a元素的索引,最接近11.5。你知道吗
如果
a
至少包含一个元素,则它相当于以下代码:如您所见,掌握python标准库大大减少了输入代码的需要
Python内置的^{} 返回某个iterable中的最小参数。然而,由于python2.5,它还需要一个
key
参数,这个函数用来计算iterable中的元素。你知道吗传递给
key
的参数是如何计算集合中的每个元素x
,如argument(x)
。传递一个lambda
,一个匿名函数,它计算lambda i: abs(a[i]-11.5)
,也就是说,对于每个索引,它在该索引处取a
中的值,并计算a[i] - 11.5
的绝对值。这是因为您将a
的索引传递给min
函数,因为range(len(a))
正是该集合(它是从0
到len(a)
的范围,以1
为步)。你知道吗综上所述,您得到的是
a
中元素的索引,它在绝对距离上最接近11.5
。你知道吗min
返回iterable中的最小值。您可以选择提供一个key
函数,在进行比较之前应用于iterable。你知道吗这里iterable是一个生成器,它将数字0返回到iterable的长度
a
。你知道吗应用于iterable的每个元素的键函数获取该元素并使用它索引到
a
。然后从这个值减去11.5,取绝对值。你知道吗总的来说,它返回
a
元素的索引,最接近11.5。你知道吗相关问题 更多 >
编程相关推荐