'''
迭代器生成器和匿名函数
截至:05月11日 08:00
''''''
1、现在有一个列表 li = [11,21,4,55,6,67,123,54,66,9,90,56,34,22],
请将 大于5的数据过滤出来,然后除以2取余数,结果放到新的列表中(匿名函数结合filter去做)
'''print("第一题解答:")
li =[11,21,4,55,6,67,123,54,66,9,90,56,34,22]
result =[(lambda y, x: y % x)(it,2)for it infilter(lambda x: x >5,iter(li))]print(result)'''
2、定义一个可以使用send传入域名,自动生成一个在前面加上http://,在后面加上路径/user/login的url地址,
生成器最多可以生成5次数据,生成5条数据之后再去生成,则报错StopIteration
使用案例:
# 例如:
res = g.send('www.baidu.com')
# 生成数据res为:http://www.baidu.com/user/logim'
'''print("第二题解答:")defgen():for i inrange(5):
s =yield i
print("http://{0}/user/login".format(s))
g = gen()
g.send(None)for i inrange(5):try:
g.send("www.baidu.com")except StopIteration as e:print(e.value)# -------------------------------------------下面两题是扩展练习题,有时间可以去做,不要求提交-----------------------# 3、算法面试题# 有一个正整数列表(数据是无序的,并且允许有相等的整数存在),# 编写能实现下列功能的函数,传入列表和正整数x,返回下面要求的三个数据# def func(array, x)# 逻辑代码# return count, li1, new_array# 1、统计并返回在列表中,比正整数x大的数有几个(相同的数只计算一次),并返回-----返回值中的的count# 2、计算列表中比正整数X小的所有偶数,并返回 -----------返回值中的li# 3、将列表中比正整数X小的偶数去掉,未去掉的数添加到新列表中,并返回-------返回值中的new_arrayprint("第三题解答:")deffunc(array, x):# 去重
array=set(array)
array=list(array)
new_array=array
# 1、统计并返回在列表中,比正整数x大的数有几个(相同的数只计算一次)
li =[(lambda y:y)(it)for it infilter(lambda y: y > x,iter(array))]
count=len(li)# 2、计算列表中比正整数X小的所有偶数
li1 =[(lambda y:y)(it)for it infilter(lambda y: y < x and y%2==0,iter(array))]# 3、将列表中比正整数X小的偶数去掉,未去掉的数添加到新列表中
eles =[(lambda y:y)(it)for it infilter(lambda y: y < x and y%2==0,iter(array))]for ele in eles:
new_array.remove(ele)return count, li1, new_array
li =[11,21,4,55,6,67,123,54,66,9,22,22,80,80]print(func(li,50))# 4、定义一个函数实现以下功能,第一个元素是数据标识,第二个元素的数值必须大于等于50才返回,不够50往后累加加到最后如果不够50也直接返回,因为没有可加的数据了# 例子1 :## a = [[1,3],[2,51],[3,49],[4,42],[5,42]] #入参## a1 = [[2,54],[4,91],[5,42]] #返回### 例子2:## b = [[1,50],[2,5],[3,10],[4,42],[5,42],[6,10]] #入参## b1 = [[1,50],[4,57],[6,52]] #返回print("第四题解答:")defdataAdd(data1):list=[]
data2 =iter(data1)for i in data2:whileTrue:if i[1]>=50:list.append(i)breaktry:
gen =next(data2)
i =[gen[0], gen[1]+ i[1]]except StopIteration:list.append(i)breakreturnlist
a =[[1,3],[2,51],[3,49],[4,42],[5,42]]
b =[[1,50],[2,5],[3,10],[4,42],[5,42],[6,10]]print("a1:\n{}".format(dataAdd(a)))print("b1:\n{}".format(dataAdd(b)))