-1

仅供参考,我是这个东西的新手

所以原来的问题是

7) 编写一个函数 filter_range(v, lo, hi),它接受一个整数列表 v 并返回一个仅包含的新列表

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

所以我对这个概念有疑问,如果用户输入整数和范围条件,它将如何根据该条件单独检查该列表中的所有项目,或者我是否必须对每个输入进行测试。这会是一个 if 语句吗?如果是这样,那将如何工作?“如果 a <= str(blah blah) < b 然后打印什么的?但是如何打印通过的每个单独的数字?老实说,总的来说只是迷路了,哈哈

4

3 回答 3

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]
于 2013-11-15T03:40:17.500 回答
0

在 Python3 中,它使用起来相当有效(实际上并不创建列表并扫描它)。

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

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

于 2013-11-15T03:53:15.300 回答
0
def filter_range(v, lo, hi):
  return list(filter(lambda x: lo<=x<hi, v))

或者

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

或者

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

或者

def filter_range(v, lo, hi):
  answer = []
  for i in v:
    if i >= lo:
      if i < hi:
        answer.append(i)
  return answer
于 2013-11-15T03:42:15.463 回答