从列表中挑选出来出现次数和数字大小相同的数~~~
arr = [3, 5, 2, 5, 3, 5, 1, 2, 5, 8, 5, 3] f = set(arr) # set 过滤 m = map(arr.count, f) # map 函数是把第二个参数以第一个的参数的规则依次去执行, 生成器只能用依次就会自动销毁 z = zip(f, m) # zip函数-->> f = [1, 2] m = [2, 3] z = [(1, 2), (2, 3)] def func(x): if x[0] == x[1]: return x f = filter(func, z) print(f'幸运数为{[x[0] for x in list(f)]}')
升级版:
arr = [3, 5, 2, 5, 3, 5, 1, 2, 5, 8, 5, 3] f = set(arr) # set 过滤 m = map(arr.count, f) # map 函数是把第二个参数以第一个的参数的规则依次去执行, 生成器只能用依次就会自动销毁 z = zip(f, m) # zip函数-->> f = [1, 2] m = [2, 3] z = [(1, 2), (2, 3)] a = filter(lambda x: x[0] == x[1], z) print('幸运数是:', [item[0] for item in a])
最终版:
arr = [3, 5, 2, 5, 3, 5, 1, 2, 5, 8, 5, 3] print('幸运数是:', [item[0] for item in filter(lambda x: x[0] == x[1], zip(set(arr) , map(arr.count, set(arr))))])