Fyi,我是这个stuf的新手
所以最初的问题是
7)编写一个函数filter_range(v,lo,hi),它取一个整数列表v并返回一个只包含
的新列表v中那些在[lo,hi]范围内的元素。
所以我遇到了这个概念的问题,如果用户输入整数和范围条件,它将如何单独检查该列表中的所有项目,或者我是否必须对每个输入进行测试。这是if声明吗?如果是这样,那将如何运作? “如果一个< = str(blah blah)< b然后打印或者其他什么?但是如何打印每个通过的个别数字?老实说只是丢失一般,lol
答案 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