算法(Python):找到大于k的最小数字
我有一个算法方面的问题。
我有一串数字(小数)
1.22,3.2, 4.9,12.3.....and so on
我想找到一个比4稍大的最小数字……比如说,答案是4.9。
除了显而易见的解决办法(就是遍历这个列表,记录下比4大的最小数字),还有什么更“python风格”的方法呢?谢谢!
4 个回答
7
这是一个使用 filter 的绝佳场景。
>>> L = [1.22, 3.2, 4.9, 12.3]
>>> k = 4
>>> a = min(filter(lambda x: x > k, L))
>>> print(a)
4.9
你也可以使用列表推导式来实现:
>>> L = [1.22, 3.2, 4.9, 12.3]
>>> k = 4
>>> a = min([element for element in L if element > k])
>>> print(a)
4.9
虽然列表推导式乍一看似乎不太简单,但其实这是推荐的做法。一些Python开发者认为,filter
不应该被使用。
使用 生成器表达式 更好,因为它不会在内存中创建整个列表:
>>> L = [1.22, 3.2, 4.9, 12.3]
>>> k = 4
>>> a = min(element for element in L if element > k)
>>> print(a)
4.9
23
min(x for x in my_list if x > 4)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。