Python - 列表操作

11

给定一个未排序的数字列表,我想找到比N大的最小数字(如果有的话)。

在C#中,我会这样做(省略了检查):

var x = list.Where(i => i > N).Min();

有没有一种简短易读的Python方式可以实现这个?


1
你所说的“可读性”是什么意思? - S.Lott
"可读性/ˈrēdəbəl/:(2)易于阅读或令人愉悦。" 你说的“你说的可读性是什么意思?”是什么意思? - Cristian Diaconescu
4个回答

19
>>> l = [4, 5, 12, 0, 3, 7]
>>> min(x for x in l if x > 5)
7

4
min(x for x in mylist if x > N)

3

其他人已经给出了列表推导式的答案。作为另一种选择,filter 可用于“过滤”掉列表中的元素。

min(filter(lambda t: t > N, mylist))

1
使用过滤器比使用生成器表达式稍微慢一些。 - Xavier Combelle
+1. 我提出这个问题部分是为了提高我的Python技能,所以这个答案很好地满足了我的目的。 - Cristian Diaconescu

2
x = min(i for i in mylist if i > N)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接