过滤整数的函数

时间:2013-11-15 03:38:58

标签: python filter set range

Fyi,我是这个stuf的新手

所以最初的问题是

7)编写一个函数filter_range(v,lo,hi),它取一个整数列表v并返回一个只包含

的新列表

v中那些在[lo,hi]范围内的元素。

所以我遇到了这个概念的问题,如果用户输入整数和范围条件,它将如何单独检查该列表中的所有项目,或者我是否必须对每个输入进行测试。这是if声明吗?如果是这样,那将如何运作? “如果一个< = str(blah blah)< b然后打印或者其他什么?但是如何打印每个通过的个别数字?老实说只是丢失一般,lol

3 个答案:

答案 0 :(得分:2)

您可以使用此类

等列表推理在一行中执行此操作
def filter_range(v, lo, hi):
    return [item for item in v if lo <= item < hi]

print filter_range(range(10), 2, 8)

<强>输出

[2, 3, 4, 5, 6, 7]

答案 1 :(得分:0)

def filter_range(v, lo, hi):
  return list(filter(lambda x: lo<=x<hi, v))

OR

def filter_range(v, lo, hi):
  acceptable = set(range(lo, hi))
  return list(filter(acceptable.__contains__, v))

OR

def filter_range(v, lo, hi):
  answer = []
  for i in v:
    if lo <= i < hi:
      answer.append(i)
  return answer

OR

def filter_range(v, lo, hi):
  answer = []
  for i in v:
    if i >= lo:
      if i < hi:
        answer.append(i)
  return answer

答案 2 :(得分:0)

在Python3中,使用它非常有效(实际上并不创建列表并扫描它)。

def filter_range(v, lo, hi):
    return [i for i in v if i in range(lo, hi)]

在Python2中,您应该使用xrange而不是range