7

我有一个元素列表(整数),我需要做的是快速检查该列表中有多少元素落在指定范围内。示例如下。

范围是从 34 到 566

l = [9,20,413,425]

结果是2。

我当然可以为此目的使用一个简单的 for 循环,并将每个元素与最小值和最大值(34 < x < 566)进行比较,然后在语句为真时使用计数器,但是我认为可能有更简单的方法要做到这一点,可能有一个很好的单线。

4

3 回答 3

13
>>> l = [9,20,413,425]
>>> sum(34 < x < 566 for x in l)
2
于 2012-05-16T09:15:20.350 回答
9

len([x for x in l if x > 34 and x < 566])

于 2012-05-16T09:10:33.713 回答
2

好吧,我不确定这很好,但它是一行;-)

len(set([9,20,413,425]).intersection(range(34,566)))
于 2012-05-16T09:10:34.373 回答