Python Lambda的用法 & 題目示範

Hsuan Hung Liu
1 min readJan 19, 2021

本題目是由Check.io中的Nearest Value來做示範:

Qusetion:
Find the nearest value to the given one.

You are given a list of values as set form and a value for which you need to find the nearest one.

For example, we have the following set of numbers: 4, 7, 10, 11, 12, 17, and we need to find the nearest value to the number 9. If we sort this set in the ascending order, then to the left of number 9 will be number 7 and to the right — will be number 10. But 10 is closer than 7, which means that the correct answer is 10.

A few clarifications:

If 2 numbers are at the same distance, you need to choose the smallest one;
The set of numbers is always non-empty, i.e. the size is >=1;
The given value can be in this set, which means that it’s the answer;
The set can contain both positive and negative numbers, but they are always integers;
The set isn’t sorted and consists of unique numbers.
Input: Two arguments. A list of values in the set form. The sought value is an int.

Output: Int.

Example:

nearest_value({4, 7, 10, 11, 12, 17}, 9) == 10
nearest_value({4, 7, 10, 11, 12, 17}, 8) == 7

Question 理解:找出數值差最小的值,如果有相同差距的數字,要選原本數字較小的為答案。

題目程式碼

Solution 1:
使用lambda相減完後,再利用range(len())的方法製造出index,藉此快速傳回原值。
因為可能會有數值相差相同的問題,所以要先sort過原本的list,藉此達到題目要求。

Solution 2 :⭐️
使用lambda並作出tuple,藉此解決如果有相減後的差相同,導致無法選出正確答案的,因為如果(abs(x-one),x))減完之後前面相同,就會自動往第二個值比。

Reference:
https://py.checkio.org/mission/nearest-value/solve/

lambda是什麼

https://www.geeksforgeeks.org/python-find-closest-number-to-k-in-given-list/

lambda加上max()

list裡放入range

--

--

Hsuan Hung Liu
0 Followers

想跟我討論或分享故事歡迎隨時連絡我~我的mail: s104213031@mail1.ncnu.edu.tw